@exegia/corpora-ui 1.0.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1151) hide show
  1. package/README.md +1 -1
  2. package/dist-lib/components/atoms/avatar/base.d.ts +2 -0
  3. package/dist-lib/components/atoms/avatar/index.d.ts +3 -0
  4. package/dist-lib/components/atoms/avatar/types.d.ts +20 -0
  5. package/dist-lib/components/atoms/avatar/utils.d.ts +13 -0
  6. package/dist-lib/components/atoms/background/texture.d.ts +2 -0
  7. package/dist-lib/components/atoms/background/type.d.ts +7 -0
  8. package/dist-lib/components/atoms/background/utils.d.ts +4 -0
  9. package/dist-lib/components/atoms/bubble/actions.d.ts +7 -0
  10. package/dist-lib/components/atoms/bubble/context.d.ts +4 -0
  11. package/dist-lib/components/atoms/bubble/default.d.ts +3 -0
  12. package/dist-lib/components/atoms/bubble/header.d.ts +8 -0
  13. package/dist-lib/components/atoms/bubble/index.d.ts +16 -0
  14. package/dist-lib/components/atoms/bubble/message.d.ts +3 -0
  15. package/dist-lib/components/atoms/bubble/reactions.d.ts +14 -0
  16. package/dist-lib/components/atoms/bubble/types.d.ts +62 -0
  17. package/dist-lib/components/atoms/bubble/utils.d.ts +13 -0
  18. package/dist-lib/components/atoms/field.d.ts +2 -0
  19. package/dist-lib/components/atoms/index.d.ts +10 -0
  20. package/dist-lib/components/atoms/loader.d.ts +2 -0
  21. package/dist-lib/components/atoms/reference.d.ts +7 -0
  22. package/dist-lib/components/atoms/text/default.d.ts +1144 -0
  23. package/dist-lib/components/atoms/text/heading.d.ts +2 -0
  24. package/dist-lib/components/atoms/text/index.d.ts +18 -0
  25. package/dist-lib/components/atoms/text/label.d.ts +2 -0
  26. package/dist-lib/components/atoms/text/paragraph.d.ts +2 -0
  27. package/dist-lib/components/atoms/text/span.d.ts +2 -0
  28. package/dist-lib/components/atoms/text/types.d.ts +27 -0
  29. package/dist-lib/components/atoms/text/utils.d.ts +4 -0
  30. package/dist-lib/components/atoms/text-selection/click-popover.d.ts +3 -0
  31. package/dist-lib/components/atoms/text-selection/index.d.ts +6 -0
  32. package/dist-lib/components/atoms/text-selection/popover.d.ts +3 -0
  33. package/dist-lib/components/atoms/text-selection/selection-atom.d.ts +30 -0
  34. package/dist-lib/components/atoms/text-selection/selection.d.ts +3 -0
  35. package/dist-lib/components/atoms/text-selection/types.d.ts +90 -0
  36. package/dist-lib/components/atoms/text-selection/use-selection.d.ts +7 -0
  37. package/dist-lib/components/atoms/types.d.ts +39 -0
  38. package/dist-lib/components/blocks/auth/auth-flow-atom.d.ts +76 -0
  39. package/dist-lib/components/blocks/auth/auth-flow-block.d.ts +41 -0
  40. package/dist-lib/components/blocks/auth/auth-session-atom.d.ts +28 -0
  41. package/dist-lib/components/blocks/auth/auth-shell.d.ts +55 -0
  42. package/dist-lib/components/blocks/auth/auth-state.d.ts +8 -0
  43. package/dist-lib/components/blocks/auth/code-auth-block.d.ts +3 -0
  44. package/dist-lib/components/blocks/auth/forgot-password-block.d.ts +3 -0
  45. package/dist-lib/components/blocks/auth/linked-accounts-block.d.ts +9 -0
  46. package/dist-lib/components/blocks/auth/login-block.d.ts +3 -0
  47. package/dist-lib/components/blocks/auth/onboarding/profile-step.d.ts +8 -0
  48. package/dist-lib/components/blocks/auth/onboarding-block.d.ts +15 -0
  49. package/dist-lib/components/blocks/auth/passkey-manager-block.d.ts +10 -0
  50. package/dist-lib/components/blocks/auth/passkey-sign-in-block.d.ts +8 -0
  51. package/dist-lib/components/blocks/auth/signup-block.d.ts +3 -0
  52. package/dist-lib/components/blocks/auth/type.d.ts +398 -0
  53. package/dist-lib/components/blocks/auth/update-password-block.d.ts +9 -0
  54. package/dist-lib/components/blocks/auth/use-auth-state.d.ts +52 -0
  55. package/dist-lib/components/blocks/chat/banners.d.ts +5 -0
  56. package/dist-lib/components/blocks/chat/base.d.ts +10 -0
  57. package/dist-lib/components/blocks/chat/header.d.ts +4 -0
  58. package/dist-lib/components/blocks/chat/index.d.ts +11 -0
  59. package/dist-lib/components/blocks/chat/recommendation-stack.d.ts +11 -0
  60. package/dist-lib/components/blocks/chat/suggested-prompts.d.ts +3 -0
  61. package/dist-lib/components/blocks/chat/type.d.ts +75 -0
  62. package/dist-lib/components/blocks/chat/version-history-record.d.ts +3 -0
  63. package/dist-lib/components/blocks/layout.d.ts +8 -0
  64. package/dist-lib/components/blocks/profile/index.d.ts +7 -0
  65. package/dist-lib/components/blocks/profile/profile-card-atom.d.ts +68 -0
  66. package/dist-lib/components/blocks/profile/profile-card-block.d.ts +66 -0
  67. package/dist-lib/components/blocks/profile/type.d.ts +80 -0
  68. package/dist-lib/components/blocks/profile/use-profile-card-state.d.ts +24 -0
  69. package/dist-lib/components/blocks/profile/use-profile-card.d.ts +34 -0
  70. package/dist-lib/components/blocks/scaffold/index.d.ts +29 -0
  71. package/dist-lib/components/blocks/scaffold/panel-close-button.d.ts +4 -0
  72. package/dist-lib/components/blocks/scaffold/panel-menu-button.d.ts +8 -0
  73. package/dist-lib/components/blocks/scaffold/scaffold-actions.d.ts +10 -0
  74. package/dist-lib/components/blocks/scaffold/scaffold-atom.d.ts +112 -0
  75. package/dist-lib/components/blocks/scaffold/scaffold-canvas.d.ts +9 -0
  76. package/dist-lib/components/blocks/scaffold/scaffold-context.d.ts +7 -0
  77. package/dist-lib/components/blocks/scaffold/scaffold-inspector.d.ts +9 -0
  78. package/dist-lib/components/blocks/scaffold/scaffold-main.d.ts +8 -0
  79. package/dist-lib/components/blocks/scaffold/scaffold-panel.d.ts +16 -0
  80. package/dist-lib/components/blocks/scaffold/scaffold-root.d.ts +17 -0
  81. package/dist-lib/components/blocks/scaffold/scaffold-sidebar.d.ts +7 -0
  82. package/dist-lib/components/blocks/scaffold/scaffold-sub-panel.d.ts +6 -0
  83. package/dist-lib/components/blocks/scaffold/scaffold-tab.d.ts +14 -0
  84. package/dist-lib/components/blocks/scaffold/type.d.ts +216 -0
  85. package/dist-lib/components/blocks/scaffold/use-scaffold-state.d.ts +26 -0
  86. package/dist-lib/components/blocks/scaffold/use-scaffold.d.ts +14 -0
  87. package/dist-lib/components/blocks/scaffold/utils.d.ts +38 -0
  88. package/dist-lib/components/blocks/shell/animated-panel-inset.d.ts +2 -0
  89. package/dist-lib/components/blocks/shell/animated-panel-provider.d.ts +2 -0
  90. package/dist-lib/components/blocks/shell/animated-panel-trigger.d.ts +2 -0
  91. package/dist-lib/components/blocks/shell/animated-panel.d.ts +2 -0
  92. package/dist-lib/components/blocks/shell/shell-fit-atom.d.ts +68 -0
  93. package/dist-lib/components/blocks/shell/shell-layout.d.ts +3 -0
  94. package/dist-lib/components/blocks/shell/shell-metrics.d.ts +72 -0
  95. package/dist-lib/components/blocks/shell/shell-panel-atom.d.ts +40 -0
  96. package/dist-lib/components/blocks/shell/type.d.ts +301 -0
  97. package/dist-lib/components/blocks/shell/use-shell-fit-state.d.ts +25 -0
  98. package/dist-lib/components/blocks/shell/use-shell-fit.d.ts +13 -0
  99. package/dist-lib/components/blocks/shell/use-shell-panels.d.ts +20 -0
  100. package/dist-lib/components/blocks/shell/utils.d.ts +72 -0
  101. package/dist-lib/components/blocks/sidebar/ai-sidebar-atom.d.ts +217 -0
  102. package/dist-lib/components/blocks/sidebar/ai-sidebar.d.ts +11 -0
  103. package/dist-lib/components/blocks/sidebar/index.d.ts +15 -0
  104. package/dist-lib/components/blocks/sidebar/sidebar-context.d.ts +3 -0
  105. package/dist-lib/components/blocks/sidebar/sidebar-icon.d.ts +2 -0
  106. package/dist-lib/components/blocks/sidebar/sidebar-row.d.ts +4 -0
  107. package/dist-lib/components/blocks/sidebar/type.d.ts +245 -0
  108. package/dist-lib/components/blocks/sidebar/use-ai-sidebar-state.d.ts +29 -0
  109. package/dist-lib/components/blocks/sidebar/use-ai-sidebar.d.ts +27 -0
  110. package/dist-lib/components/blocks/sidebar/utils.d.ts +21 -0
  111. package/dist-lib/components/blocks/types.d.ts +6 -0
  112. package/dist-lib/components/composed/action-bar/action.d.ts +18 -0
  113. package/dist-lib/components/composed/action-bar/emojis.d.ts +10 -0
  114. package/dist-lib/components/composed/action-bar/index.d.ts +12 -0
  115. package/dist-lib/components/composed/action-bar/toolbar.d.ts +2 -0
  116. package/dist-lib/components/composed/action-bar/types.d.ts +55 -0
  117. package/dist-lib/components/composed/action-bar/utils.d.ts +56 -0
  118. package/dist-lib/components/composed/ai/index.d.ts +17 -0
  119. package/dist-lib/components/composed/ai/message.d.ts +7 -0
  120. package/dist-lib/components/composed/ai/research-answer.d.ts +30 -0
  121. package/dist-lib/components/composed/ai/streaming-text.d.ts +26 -0
  122. package/dist-lib/components/composed/ai/suggested-prompt.d.ts +35 -0
  123. package/dist-lib/components/composed/ai/types.d.ts +68 -0
  124. package/dist-lib/components/composed/chat/attachment-file.d.ts +17 -0
  125. package/dist-lib/components/composed/chat/attachment.d.ts +60 -0
  126. package/dist-lib/components/composed/chat/chart/chart-atom.d.ts +30 -0
  127. package/dist-lib/components/composed/chat/chart/chart-context.d.ts +2 -0
  128. package/dist-lib/components/composed/chat/chart/chart-legend.d.ts +4 -0
  129. package/dist-lib/components/composed/chat/chart/chart-plot.d.ts +3 -0
  130. package/dist-lib/components/composed/chat/chart/chart-root.d.ts +3 -0
  131. package/dist-lib/components/composed/chat/chart/chart-tooltip.d.ts +4 -0
  132. package/dist-lib/components/composed/chat/chart/constants.d.ts +3 -0
  133. package/dist-lib/components/composed/chat/chart/evilcharts/echarts-area-chart.d.ts +93 -0
  134. package/dist-lib/components/composed/chat/chart/evilcharts/echarts-bar-chart.d.ts +86 -0
  135. package/dist-lib/components/composed/chat/chart/evilcharts/echarts-brush.d.ts +65 -0
  136. package/dist-lib/components/composed/chat/chart/evilcharts/echarts-chart.d.ts +44 -0
  137. package/dist-lib/components/composed/chat/chart/evilcharts/echarts-dot.d.ts +16 -0
  138. package/dist-lib/components/composed/chat/chart/evilcharts/echarts-legend.d.ts +24 -0
  139. package/dist-lib/components/composed/chat/chart/evilcharts/echarts-line-chart.d.ts +90 -0
  140. package/dist-lib/components/composed/chat/chart/evilcharts/echarts-pie-chart.d.ts +73 -0
  141. package/dist-lib/components/composed/chat/chart/evilcharts/echarts-tooltip.d.ts +29 -0
  142. package/dist-lib/components/composed/chat/chart/index.d.ts +6 -0
  143. package/dist-lib/components/composed/chat/chart/type.d.ts +80 -0
  144. package/dist-lib/components/composed/chat/chart/use-chart-state.d.ts +3 -0
  145. package/dist-lib/components/composed/chat/chart/use-chart.d.ts +6 -0
  146. package/dist-lib/components/composed/chat/chart/utils.d.ts +5 -0
  147. package/dist-lib/components/composed/chat/chart.d.ts +1 -0
  148. package/dist-lib/components/composed/chat/code-block.d.ts +26 -0
  149. package/dist-lib/components/composed/chat/composer/add-button.d.ts +5 -0
  150. package/dist-lib/components/composed/chat/composer/base.d.ts +5 -0
  151. package/dist-lib/components/composed/chat/composer/command-menu.d.ts +3 -0
  152. package/dist-lib/components/composed/chat/composer/hooks.d.ts +9 -0
  153. package/dist-lib/components/composed/chat/composer/send-button.d.ts +3 -0
  154. package/dist-lib/components/composed/chat/composer/suggestions.d.ts +7 -0
  155. package/dist-lib/components/composed/chat/composer/use-dictation.d.ts +8 -0
  156. package/dist-lib/components/composed/chat/composer/utils.d.ts +19 -0
  157. package/dist-lib/components/composed/chat/context-cards.d.ts +27 -0
  158. package/dist-lib/components/composed/chat/filter-table.d.ts +40 -0
  159. package/dist-lib/components/composed/chat/flowchart/chart-node.d.ts +2 -0
  160. package/dist-lib/components/composed/chat/flowchart/connector.d.ts +2 -0
  161. package/dist-lib/components/composed/chat/flowchart/default.d.ts +7 -0
  162. package/dist-lib/components/composed/chat/flowchart/edge-toolbar.d.ts +9 -0
  163. package/dist-lib/components/composed/chat/flowchart/hooks.d.ts +290 -0
  164. package/dist-lib/components/composed/chat/flowchart/step-body.d.ts +6 -0
  165. package/dist-lib/components/composed/chat/flowchart/types.d.ts +91 -0
  166. package/dist-lib/components/composed/chat/flowchart/utils.d.ts +64 -0
  167. package/dist-lib/components/composed/chat/index.d.ts +15 -0
  168. package/dist-lib/components/composed/chat/insight-cards.d.ts +54 -0
  169. package/dist-lib/components/composed/chat/markdown-atom.d.ts +7 -0
  170. package/dist-lib/components/composed/chat/markdown.d.ts +22 -0
  171. package/dist-lib/components/composed/chat/recommendation/checkbox.d.ts +9 -0
  172. package/dist-lib/components/composed/chat/recommendation/constant.d.ts +52 -0
  173. package/dist-lib/components/composed/chat/recommendation/default.d.ts +7 -0
  174. package/dist-lib/components/composed/chat/recommendation/group.d.ts +7 -0
  175. package/dist-lib/components/composed/chat/recommendation/index.d.ts +13 -0
  176. package/dist-lib/components/composed/chat/recommendation/item.d.ts +12 -0
  177. package/dist-lib/components/composed/chat/recommendation/types.d.ts +62 -0
  178. package/dist-lib/components/composed/chat/records-table.d.ts +40 -0
  179. package/dist-lib/components/composed/chat/type.d.ts +117 -0
  180. package/dist-lib/components/composed/logo.d.ts +34 -0
  181. package/dist-lib/components/composed/password-input.d.ts +30 -0
  182. package/dist-lib/components/composed/reader/applied-mark.d.ts +3 -0
  183. package/dist-lib/components/composed/reader/apply-toast.d.ts +3 -0
  184. package/dist-lib/components/composed/reader/selection-highlight.d.ts +3 -0
  185. package/dist-lib/components/composed/reader/selection-popover.d.ts +9 -0
  186. package/dist-lib/components/composed/reader/type.d.ts +40 -0
  187. package/dist-lib/components/composed/social-providers.d.ts +39 -0
  188. package/dist-lib/components/composed/tree/index.d.ts +6 -0
  189. package/dist-lib/components/composed/tree/tree-atom.d.ts +160 -0
  190. package/dist-lib/components/composed/tree/tree-context.d.ts +4 -0
  191. package/dist-lib/components/composed/tree/tree-node.d.ts +12 -0
  192. package/dist-lib/components/composed/tree/tree.d.ts +19 -0
  193. package/dist-lib/components/composed/tree/type.d.ts +290 -0
  194. package/dist-lib/components/composed/tree/use-tree-dnd.d.ts +18 -0
  195. package/dist-lib/components/composed/tree/use-tree-state.d.ts +25 -0
  196. package/dist-lib/components/composed/tree/use-tree.d.ts +24 -0
  197. package/dist-lib/components/composed/tree/utils.d.ts +28 -0
  198. package/dist-lib/components/composed/types.d.ts +7 -0
  199. package/dist-lib/components/composed/user/index.d.ts +11 -0
  200. package/dist-lib/components/composed/user/info.d.ts +12 -0
  201. package/dist-lib/components/composed/user/message.d.ts +2 -0
  202. package/dist-lib/components/composed/user/pill.d.ts +10 -0
  203. package/dist-lib/components/composed/user/types.d.ts +27 -0
  204. package/dist-lib/components/composed/verse/index.d.ts +2 -0
  205. package/dist-lib/components/composed/verse/types.d.ts +18 -0
  206. package/dist-lib/components/composed/verse/verse.d.ts +5 -0
  207. package/dist-lib/components/docs/atoms-gallery.d.ts +12 -0
  208. package/dist-lib/components/docs/block-demo-stage.d.ts +7 -0
  209. package/dist-lib/components/docs/blocks-gallery.d.ts +2 -0
  210. package/dist-lib/components/docs/browser.d.ts +10 -0
  211. package/dist-lib/components/docs/components-gallery.d.ts +2 -0
  212. package/dist-lib/components/docs/demo-controls.d.ts +21 -0
  213. package/dist-lib/components/icons/__tests__/icons.test.d.ts +1 -0
  214. package/dist-lib/components/icons/file-badge-cfm.d.ts +7 -0
  215. package/dist-lib/components/icons/file-badge-corpus.d.ts +7 -0
  216. package/dist-lib/components/icons/file-badge-pdf.d.ts +7 -0
  217. package/dist-lib/components/icons/file-badge-tei.d.ts +7 -0
  218. package/dist-lib/components/icons/file-badge-tf.d.ts +7 -0
  219. package/dist-lib/components/icons/file-badge-txt.d.ts +7 -0
  220. package/dist-lib/components/icons/file-badge-xml.d.ts +7 -0
  221. package/dist-lib/components/icons/file-wordmark-cfm.d.ts +7 -0
  222. package/dist-lib/components/icons/file-wordmark-corpus.d.ts +7 -0
  223. package/dist-lib/components/icons/file-wordmark-pdf.d.ts +7 -0
  224. package/dist-lib/components/icons/file-wordmark-tei.d.ts +7 -0
  225. package/dist-lib/components/icons/file-wordmark-tf.d.ts +7 -0
  226. package/dist-lib/components/icons/file-wordmark-txt.d.ts +7 -0
  227. package/dist-lib/components/icons/file-wordmark-xml.d.ts +7 -0
  228. package/dist-lib/components/icons/index.d.ts +15 -0
  229. package/dist-lib/components/icons/types.d.ts +7 -0
  230. package/dist-lib/components/motion/index.d.ts +1 -0
  231. package/dist-lib/components/motion/overflow-actions.d.ts +35 -0
  232. package/dist-lib/components/motion/popover-morph.d.ts +35 -0
  233. package/dist-lib/components/motion/popover-position.d.ts +15 -0
  234. package/dist-lib/components/motion/shared-layout-bg.d.ts +13 -0
  235. package/dist-lib/components/stories/attachment.story.d.ts +11 -0
  236. package/dist-lib/components/stories/auth-flow-block.story.d.ts +2 -0
  237. package/dist-lib/components/stories/avatar.story.d.ts +6 -0
  238. package/dist-lib/components/stories/base.story.d.ts +6 -0
  239. package/dist-lib/components/stories/bubble.story.d.ts +6 -0
  240. package/dist-lib/components/stories/button.story.d.ts +9 -0
  241. package/dist-lib/components/stories/card.story.d.ts +8 -0
  242. package/dist-lib/components/stories/chart.story.d.ts +71 -0
  243. package/dist-lib/components/stories/checkbox.story.d.ts +6 -0
  244. package/dist-lib/components/stories/code-auth-block.story.d.ts +2 -0
  245. package/dist-lib/components/stories/code-block.story.d.ts +12 -0
  246. package/dist-lib/components/stories/composed-password-input.story.d.ts +6 -0
  247. package/dist-lib/components/stories/context-cards.story.d.ts +3 -0
  248. package/dist-lib/components/stories/emoji-action-bar.story.d.ts +3 -0
  249. package/dist-lib/components/stories/field.story.d.ts +6 -0
  250. package/dist-lib/components/stories/file-icons.story.d.ts +5 -0
  251. package/dist-lib/components/stories/filter-table.story.d.ts +21 -0
  252. package/dist-lib/components/stories/flowchart.story.d.ts +3 -0
  253. package/dist-lib/components/stories/forgot-password-block.story.d.ts +2 -0
  254. package/dist-lib/components/stories/frame.story.d.ts +8 -0
  255. package/dist-lib/components/stories/index.d.ts +54 -0
  256. package/dist-lib/components/stories/input-group.story.d.ts +6 -0
  257. package/dist-lib/components/stories/input.story.d.ts +8 -0
  258. package/dist-lib/components/stories/insight-cards.story.d.ts +74 -0
  259. package/dist-lib/components/stories/label.story.d.ts +8 -0
  260. package/dist-lib/components/stories/linked-accounts-block.story.d.ts +2 -0
  261. package/dist-lib/components/stories/login-block.story.d.ts +2 -0
  262. package/dist-lib/components/stories/logo.story.d.ts +3 -0
  263. package/dist-lib/components/stories/markdown.story.d.ts +7 -0
  264. package/dist-lib/components/stories/menu-command.story.d.ts +13 -0
  265. package/dist-lib/components/stories/onboarding-block.story.d.ts +2 -0
  266. package/dist-lib/components/stories/otp-field.story.d.ts +8 -0
  267. package/dist-lib/components/stories/passkey-manager-block.story.d.ts +2 -0
  268. package/dist-lib/components/stories/passkey-sign-in-block.story.d.ts +2 -0
  269. package/dist-lib/components/stories/password-input.story.d.ts +9 -0
  270. package/dist-lib/components/stories/profile-card-block.story.d.ts +6 -0
  271. package/dist-lib/components/stories/recommendation-card.story.d.ts +3 -0
  272. package/dist-lib/components/stories/records-table.story.d.ts +23 -0
  273. package/dist-lib/components/stories/reference.story.d.ts +9 -0
  274. package/dist-lib/components/stories/research-answer.story.d.ts +10 -0
  275. package/dist-lib/components/stories/scaffold-root.story.d.ts +6 -0
  276. package/dist-lib/components/stories/separator.story.d.ts +6 -0
  277. package/dist-lib/components/stories/shell-layout.story.d.ts +2 -0
  278. package/dist-lib/components/stories/signup-block.story.d.ts +2 -0
  279. package/dist-lib/components/stories/social-providers.story.d.ts +3 -0
  280. package/dist-lib/components/stories/streaming-text.story.d.ts +3 -0
  281. package/dist-lib/components/stories/text.story.d.ts +8 -0
  282. package/dist-lib/components/stories/textarea.story.d.ts +6 -0
  283. package/dist-lib/components/stories/tree.story.d.ts +4 -0
  284. package/dist-lib/components/stories/update-password-block.story.d.ts +2 -0
  285. package/dist-lib/components/stories/user.story.d.ts +8 -0
  286. package/dist-lib/components/stories/verse.story.d.ts +6 -0
  287. package/dist-lib/components/theme-provider.d.ts +15 -0
  288. package/dist-lib/components/types.d.ts +11 -0
  289. package/dist-lib/components/ui/badge.d.ts +14 -0
  290. package/dist-lib/components/ui/button.d.ts +28 -0
  291. package/dist-lib/components/ui/chat/__tests__/segmented-toggle.test.d.ts +1 -0
  292. package/dist-lib/components/ui/chat/avatar-handle.d.ts +13 -0
  293. package/dist-lib/components/ui/chat/badges.d.ts +29 -0
  294. package/dist-lib/components/ui/chat/buttons.d.ts +29 -0
  295. package/dist-lib/components/ui/chat/chips.d.ts +48 -0
  296. package/dist-lib/components/ui/chat/dot.d.ts +30 -0
  297. package/dist-lib/components/ui/chat/icon-button.d.ts +18 -0
  298. package/dist-lib/components/ui/chat/icon-tile.d.ts +20 -0
  299. package/dist-lib/components/ui/chat/index.d.ts +12 -0
  300. package/dist-lib/components/ui/chat/inline-source.d.ts +20 -0
  301. package/dist-lib/components/ui/chat/segmented-toggle.d.ts +20 -0
  302. package/dist-lib/components/ui/chat/tag.d.ts +21 -0
  303. package/dist-lib/components/ui/chat/thumbnail.d.ts +13 -0
  304. package/dist-lib/components/ui/chat/waveform.d.ts +13 -0
  305. package/dist-lib/components/ui/glasscn/glass-button-group.d.ts +7 -0
  306. package/dist-lib/components/ui/glasscn/glass-button.d.ts +6 -0
  307. package/dist-lib/components/ui/glasscn/glass-container.d.ts +8 -0
  308. package/dist-lib/components/ui/glasscn/glass-separator.d.ts +5 -0
  309. package/dist-lib/components/ui/glasscn/liquid-glass.d.ts +29 -0
  310. package/dist-lib/components/ui/input-group.d.ts +13 -0
  311. package/dist-lib/components/ui/input.d.ts +9 -0
  312. package/dist-lib/components/ui/menu-command.d.ts +36 -0
  313. package/dist-lib/components/ui/popover-glass.d.ts +32 -0
  314. package/dist-lib/components/ui/select.d.ts +30 -0
  315. package/dist-lib/components/ui/tabs.d.ts +15 -0
  316. package/dist-lib/components/ui/textarea.d.ts +8 -0
  317. package/dist-lib/components/ui/toast.d.ts +15 -0
  318. package/dist-lib/index.d.ts +65 -0
  319. package/dist-lib/index.js +11893 -6443
  320. package/dist-lib/index.js.map +1 -1
  321. package/dist-lib/lib/attachment-content.d.ts +4 -0
  322. package/dist-lib/lib/auth-accent.d.ts +33 -0
  323. package/dist-lib/lib/glass-variants.d.ts +9 -0
  324. package/dist-lib/lib/keyed-atom.d.ts +14 -0
  325. package/dist-lib/lib/segmented-control.d.ts +8 -0
  326. package/dist-lib/lib/specular.d.ts +12 -0
  327. package/dist-lib/lib/state/__tests__/sound.test.d.ts +1 -0
  328. package/dist-lib/lib/state/exegia-provider.d.ts +51 -0
  329. package/dist-lib/lib/state/index.d.ts +4 -0
  330. package/dist-lib/lib/state/store.d.ts +17 -0
  331. package/dist-lib/lib/use-motion-panel.d.ts +9 -0
  332. package/dist-lib/lib/utils.test.d.ts +1 -0
  333. package/package.json +6 -1
  334. package/src/components/atoms/avatar/base.tsx +3 -3
  335. package/src/components/atoms/avatar/index.ts +8 -1
  336. package/src/components/atoms/avatar/types.ts +9 -9
  337. package/src/components/atoms/avatar/utils.ts +6 -6
  338. package/src/components/atoms/background/texture.tsx +2 -2
  339. package/src/components/atoms/background/type.ts +3 -3
  340. package/src/components/atoms/background/utils.ts +2 -2
  341. package/src/components/atoms/bubble/__tests__/bubble.test.tsx +59 -4
  342. package/src/components/atoms/bubble/actions.tsx +2 -2
  343. package/src/components/atoms/bubble/context.ts +3 -3
  344. package/src/components/atoms/bubble/default.tsx +2 -2
  345. package/src/components/atoms/bubble/header.tsx +6 -4
  346. package/src/components/atoms/bubble/index.ts +9 -9
  347. package/src/components/atoms/bubble/message.tsx +12 -5
  348. package/src/components/atoms/bubble/reactions.tsx +11 -14
  349. package/src/components/atoms/bubble/types.ts +21 -18
  350. package/src/components/atoms/bubble/utils.ts +10 -10
  351. package/src/components/atoms/field.tsx +43 -0
  352. package/src/components/atoms/index.ts +0 -26
  353. package/src/components/atoms/loader.tsx +2 -11
  354. package/src/components/atoms/reference.tsx +2 -2
  355. package/src/components/atoms/text/default.tsx +5 -5
  356. package/src/components/atoms/text/heading.tsx +2 -5
  357. package/src/components/atoms/text/index.ts +8 -4
  358. package/src/components/atoms/text/label.tsx +2 -2
  359. package/src/components/atoms/text/paragraph.tsx +2 -5
  360. package/src/components/atoms/text/span.tsx +2 -3
  361. package/src/components/atoms/text/types.ts +18 -8
  362. package/src/components/atoms/text/utils.ts +2 -2
  363. package/src/components/atoms/text-selection/click-popover.tsx +3 -3
  364. package/src/components/atoms/text-selection/index.ts +12 -12
  365. package/src/components/atoms/text-selection/popover.tsx +7 -4
  366. package/src/components/atoms/text-selection/selection-atom.ts +7 -7
  367. package/src/components/atoms/text-selection/selection.tsx +2 -2
  368. package/src/components/atoms/text-selection/types.ts +24 -24
  369. package/src/components/atoms/text-selection/use-selection.ts +3 -3
  370. package/src/components/atoms/types.ts +30 -2
  371. package/src/components/blocks/auth/__tests__/auth-flow-block.test.tsx +4 -4
  372. package/src/components/blocks/auth/__tests__/auth-state-atom.test.tsx +2 -2
  373. package/src/components/blocks/auth/__tests__/linked-accounts-block.test.tsx +2 -2
  374. package/src/components/blocks/auth/__tests__/onboarding-block.test.tsx +39 -12
  375. package/src/components/blocks/auth/__tests__/passkey-manager-block.test.tsx +4 -4
  376. package/src/components/blocks/auth/auth-flow-atom.ts +27 -27
  377. package/src/components/blocks/auth/auth-flow-block.tsx +8 -93
  378. package/src/components/blocks/auth/auth-session-atom.ts +9 -9
  379. package/src/components/blocks/auth/auth-shell.tsx +2 -3
  380. package/src/components/blocks/auth/auth-state.ts +0 -12
  381. package/src/components/blocks/auth/code-auth-block.tsx +16 -30
  382. package/src/components/blocks/auth/forgot-password-block.tsx +4 -15
  383. package/src/components/blocks/auth/linked-accounts-block.tsx +10 -36
  384. package/src/components/blocks/auth/login-block.tsx +7 -29
  385. package/src/components/blocks/auth/onboarding/profile-step.tsx +14 -25
  386. package/src/components/blocks/auth/onboarding-block.tsx +39 -96
  387. package/src/components/blocks/auth/passkey-manager-block.tsx +8 -33
  388. package/src/components/blocks/auth/passkey-sign-in-block.tsx +6 -20
  389. package/src/components/blocks/auth/signup-block.tsx +7 -44
  390. package/src/components/blocks/auth/type.ts +436 -0
  391. package/src/components/blocks/auth/update-password-block.tsx +4 -22
  392. package/src/components/blocks/auth/use-auth-state.ts +12 -12
  393. package/src/components/blocks/chat/__tests__/ai-panel.test.tsx +2 -2
  394. package/src/components/blocks/chat/banners.tsx +5 -13
  395. package/src/components/blocks/chat/base.tsx +2 -2
  396. package/src/components/blocks/chat/header.tsx +2 -2
  397. package/src/components/blocks/chat/index.ts +17 -19
  398. package/src/components/blocks/chat/recommendation-stack.tsx +4 -6
  399. package/src/components/blocks/chat/suggested-prompts.tsx +2 -2
  400. package/src/components/blocks/chat/type.ts +96 -0
  401. package/src/components/blocks/chat/version-history-record.tsx +2 -2
  402. package/src/components/blocks/profile/__tests__/profile-card-block.test.tsx +6 -6
  403. package/src/components/blocks/profile/index.ts +2 -2
  404. package/src/components/blocks/profile/profile-card-atom.ts +29 -29
  405. package/src/components/blocks/profile/profile-card-block.tsx +30 -30
  406. package/src/components/blocks/profile/type.ts +17 -17
  407. package/src/components/blocks/profile/use-profile-card-state.ts +7 -7
  408. package/src/components/blocks/profile/use-profile-card.ts +18 -18
  409. package/src/components/blocks/scaffold/__tests__/scaffold-atom.test.tsx +28 -2
  410. package/src/components/blocks/scaffold/__tests__/scaffold.test.tsx +90 -11
  411. package/src/components/blocks/scaffold/index.ts +4 -0
  412. package/src/components/blocks/scaffold/panel-close-button.tsx +2 -2
  413. package/src/components/blocks/scaffold/panel-menu-button.tsx +2 -2
  414. package/src/components/blocks/scaffold/scaffold-actions.tsx +2 -2
  415. package/src/components/blocks/scaffold/scaffold-atom.ts +76 -32
  416. package/src/components/blocks/scaffold/scaffold-canvas.tsx +89 -10
  417. package/src/components/blocks/scaffold/scaffold-context.ts +3 -3
  418. package/src/components/blocks/scaffold/scaffold-inspector.tsx +56 -7
  419. package/src/components/blocks/scaffold/scaffold-main.tsx +2 -2
  420. package/src/components/blocks/scaffold/scaffold-panel.tsx +119 -71
  421. package/src/components/blocks/scaffold/scaffold-root.tsx +14 -12
  422. package/src/components/blocks/scaffold/scaffold-sidebar.tsx +2 -2
  423. package/src/components/blocks/scaffold/scaffold-sub-panel.tsx +82 -13
  424. package/src/components/blocks/scaffold/scaffold-tab.tsx +2 -2
  425. package/src/components/blocks/scaffold/type.ts +46 -28
  426. package/src/components/blocks/scaffold/use-scaffold-state.ts +35 -8
  427. package/src/components/blocks/scaffold/use-scaffold.ts +3 -3
  428. package/src/components/blocks/scaffold/utils.ts +9 -6
  429. package/src/components/blocks/shell/__tests__/shell-fit-atom.test.tsx +7 -5
  430. package/src/components/blocks/shell/__tests__/shell-layout.test.tsx +154 -9
  431. package/src/components/blocks/shell/__tests__/shell-metrics.test.ts +56 -10
  432. package/src/components/blocks/shell/animated-panel-inset.tsx +9 -9
  433. package/src/components/blocks/shell/animated-panel-provider.tsx +76 -30
  434. package/src/components/blocks/shell/animated-panel-trigger.tsx +10 -5
  435. package/src/components/blocks/shell/animated-panel.tsx +76 -128
  436. package/src/components/blocks/shell/shell-fit-atom.ts +29 -26
  437. package/src/components/blocks/shell/shell-layout.tsx +29 -13
  438. package/src/components/blocks/shell/shell-metrics.ts +69 -15
  439. package/src/components/blocks/shell/shell-panel-atom.ts +74 -0
  440. package/src/components/blocks/shell/type.ts +78 -69
  441. package/src/components/blocks/shell/use-shell-fit-state.ts +4 -4
  442. package/src/components/blocks/shell/use-shell-fit.ts +52 -34
  443. package/src/components/blocks/shell/use-shell-panels.ts +32 -66
  444. package/src/components/blocks/shell/utils.ts +8 -4
  445. package/src/components/blocks/sidebar/__tests__/ai-sidebar-atom.test.tsx +325 -0
  446. package/src/components/blocks/sidebar/__tests__/ai-sidebar.test.tsx +93 -0
  447. package/src/components/blocks/sidebar/__tests__/use-ai-sidebar.test.tsx +310 -0
  448. package/src/components/blocks/sidebar/ai-sidebar-atom.ts +698 -0
  449. package/src/components/blocks/sidebar/ai-sidebar.tsx +150 -0
  450. package/src/components/blocks/sidebar/index.ts +67 -0
  451. package/src/components/blocks/sidebar/sidebar-context.ts +15 -0
  452. package/src/components/blocks/sidebar/sidebar-icon.tsx +14 -0
  453. package/src/components/blocks/sidebar/sidebar-row.tsx +378 -0
  454. package/src/components/blocks/sidebar/type.ts +294 -0
  455. package/src/components/blocks/sidebar/use-ai-sidebar-state.ts +123 -0
  456. package/src/components/blocks/sidebar/use-ai-sidebar.ts +619 -0
  457. package/src/components/blocks/sidebar/utils.ts +170 -0
  458. package/src/components/blocks/types.ts +6 -0
  459. package/src/components/composed/action-bar/__tests__/action-bar.test.tsx +43 -14
  460. package/src/components/composed/action-bar/action.tsx +9 -12
  461. package/src/components/composed/action-bar/emojis.tsx +4 -4
  462. package/src/components/composed/action-bar/index.ts +8 -8
  463. package/src/components/composed/action-bar/toolbar.tsx +36 -30
  464. package/src/components/composed/action-bar/types.ts +14 -14
  465. package/src/components/composed/action-bar/utils.ts +17 -18
  466. package/src/components/composed/ai/__tests__/ai.test.tsx +3 -4
  467. package/src/components/composed/ai/avatar.tsx +4 -5
  468. package/src/components/composed/ai/index.ts +7 -7
  469. package/src/components/composed/ai/message.tsx +7 -7
  470. package/src/components/composed/ai/research-answer.tsx +7 -7
  471. package/src/components/composed/ai/streaming-text.tsx +5 -5
  472. package/src/components/composed/ai/suggested-prompt.tsx +4 -4
  473. package/src/components/composed/ai/types.ts +30 -30
  474. package/src/components/composed/chat/__tests__/attachment.test.tsx +182 -9
  475. package/src/components/composed/chat/__tests__/chart.test.tsx +295 -8
  476. package/src/components/composed/chat/__tests__/composer-attachments.test.tsx +51 -3
  477. package/src/components/composed/chat/__tests__/composer.test.tsx +173 -6
  478. package/src/components/composed/chat/__tests__/flowchart.test.tsx +15 -2
  479. package/src/components/composed/chat/__tests__/glass-material.test.tsx +54 -0
  480. package/src/components/composed/chat/__tests__/menu-command.test.tsx +35 -0
  481. package/src/components/composed/chat/__tests__/recommendation.test.tsx +43 -0
  482. package/src/components/composed/chat/attachment-file.ts +82 -0
  483. package/src/components/composed/chat/attachment.tsx +387 -117
  484. package/src/components/composed/chat/chart/chart-atom.ts +55 -0
  485. package/src/components/composed/chat/chart/chart-context.ts +9 -0
  486. package/src/components/composed/chat/chart/chart-legend.tsx +75 -0
  487. package/src/components/composed/chat/chart/chart-plot.tsx +233 -0
  488. package/src/components/composed/chat/chart/chart-root.tsx +229 -0
  489. package/src/components/composed/chat/chart/chart-tooltip.tsx +74 -0
  490. package/src/components/composed/chat/chart/constants.ts +8 -0
  491. package/src/components/composed/chat/chart/evilcharts/LICENSE +21 -0
  492. package/src/components/composed/chat/chart/evilcharts/README.md +8 -0
  493. package/src/components/composed/chat/chart/evilcharts/echarts-area-chart.tsx +2358 -0
  494. package/src/components/composed/chat/chart/evilcharts/echarts-bar-chart.tsx +2261 -0
  495. package/src/components/composed/chat/chart/evilcharts/echarts-brush.tsx +233 -0
  496. package/src/components/composed/chat/chart/evilcharts/echarts-chart.tsx +214 -0
  497. package/src/components/composed/chat/chart/evilcharts/echarts-dot.tsx +111 -0
  498. package/src/components/composed/chat/chart/evilcharts/echarts-legend.tsx +131 -0
  499. package/src/components/composed/chat/chart/evilcharts/echarts-line-chart.tsx +2112 -0
  500. package/src/components/composed/chat/chart/evilcharts/echarts-pie-chart.tsx +1235 -0
  501. package/src/components/composed/chat/chart/evilcharts/echarts-tooltip.tsx +125 -0
  502. package/src/components/composed/chat/chart/index.ts +13 -0
  503. package/src/components/composed/chat/chart/type.ts +88 -0
  504. package/src/components/composed/chat/chart/use-chart-state.ts +22 -0
  505. package/src/components/composed/chat/chart/use-chart.ts +70 -0
  506. package/src/components/composed/chat/chart/utils.ts +47 -0
  507. package/src/components/composed/chat/chart.tsx +2 -192
  508. package/src/components/composed/chat/code-block.tsx +5 -5
  509. package/src/components/composed/chat/composer/BEAUTIFUL-UI-LICENSE.txt +23 -0
  510. package/src/components/composed/chat/composer/add-button.tsx +24 -17
  511. package/src/components/composed/chat/composer/base.tsx +503 -178
  512. package/src/components/composed/chat/composer/command-menu.tsx +31 -26
  513. package/src/components/composed/chat/composer/hooks.ts +3 -3
  514. package/src/components/composed/chat/composer/send-button.tsx +20 -28
  515. package/src/components/composed/chat/composer/suggestions.tsx +2 -2
  516. package/src/components/composed/chat/composer/use-dictation.ts +123 -0
  517. package/src/components/composed/chat/composer/utils.ts +4 -4
  518. package/src/components/composed/chat/context-cards.tsx +5 -5
  519. package/src/components/composed/chat/filter-table.tsx +8 -8
  520. package/src/components/composed/chat/flowchart/chart-node.tsx +2 -2
  521. package/src/components/composed/chat/flowchart/connector.tsx +2 -2
  522. package/src/components/composed/chat/flowchart/default.tsx +3 -3
  523. package/src/components/composed/chat/flowchart/edge-toolbar.tsx +5 -5
  524. package/src/components/composed/chat/flowchart/hooks.tsx +28 -26
  525. package/src/components/composed/chat/flowchart/step-body.tsx +2 -2
  526. package/src/components/composed/chat/flowchart/types.ts +14 -14
  527. package/src/components/composed/chat/flowchart/utils.ts +15 -15
  528. package/src/components/composed/chat/index.ts +35 -39
  529. package/src/components/composed/chat/insight-cards.tsx +17 -17
  530. package/src/components/composed/chat/markdown-atom.ts +2 -2
  531. package/src/components/composed/chat/markdown.tsx +10 -10
  532. package/src/components/composed/chat/recommendation/checkbox.tsx +3 -14
  533. package/src/components/composed/chat/recommendation/constant.ts +35 -6
  534. package/src/components/composed/chat/recommendation/default.tsx +2 -2
  535. package/src/components/composed/chat/recommendation/group.tsx +4 -11
  536. package/src/components/composed/chat/recommendation/index.ts +0 -2
  537. package/src/components/composed/chat/recommendation/item.tsx +35 -64
  538. package/src/components/composed/chat/recommendation/types.ts +26 -15
  539. package/src/components/composed/chat/records-table.tsx +20 -18
  540. package/src/components/composed/chat/type.ts +56 -25
  541. package/src/components/composed/logo.tsx +4 -4
  542. package/src/components/composed/password-input.tsx +2 -2
  543. package/src/components/composed/reader/applied-mark.tsx +2 -2
  544. package/src/components/composed/reader/apply-toast.tsx +2 -2
  545. package/src/components/composed/reader/selection-highlight.tsx +2 -2
  546. package/src/components/composed/reader/selection-popover.tsx +2 -2
  547. package/src/components/composed/reader/type.ts +8 -8
  548. package/src/components/composed/social-providers.tsx +26 -18
  549. package/src/components/composed/tree/CLAUDE.md +3 -3
  550. package/src/components/composed/tree/__tests__/tree-atom.test.tsx +8 -8
  551. package/src/components/composed/tree/__tests__/tree.test.tsx +10 -10
  552. package/src/components/composed/tree/__tests__/use-tree.test.tsx +10 -10
  553. package/src/components/composed/tree/index.ts +12 -12
  554. package/src/components/composed/tree/tree-atom.ts +46 -46
  555. package/src/components/composed/tree/tree-context.ts +3 -3
  556. package/src/components/composed/tree/tree-node.tsx +7 -7
  557. package/src/components/composed/tree/tree.tsx +13 -13
  558. package/src/components/composed/tree/type.ts +56 -56
  559. package/src/components/composed/tree/use-tree-dnd.ts +10 -10
  560. package/src/components/composed/tree/use-tree-state.ts +3 -3
  561. package/src/components/composed/tree/use-tree.ts +10 -10
  562. package/src/components/composed/tree/utils.ts +21 -21
  563. package/src/components/composed/types.ts +9 -0
  564. package/src/components/composed/user/__tests__/message.test.tsx +79 -0
  565. package/src/components/composed/user/index.ts +2 -2
  566. package/src/components/composed/user/info.tsx +15 -7
  567. package/src/components/composed/user/message.tsx +33 -7
  568. package/src/components/composed/user/pill.tsx +3 -3
  569. package/src/components/composed/user/types.ts +34 -14
  570. package/src/components/composed/verse/index.ts +1 -1
  571. package/src/components/composed/verse/types.ts +8 -8
  572. package/src/components/composed/verse/verse.tsx +6 -6
  573. package/src/components/docs/atoms-gallery.tsx +45 -45
  574. package/src/components/docs/block-demo-stage.tsx +38 -0
  575. package/src/components/docs/blocks-gallery.tsx +224 -0
  576. package/src/components/docs/browser.tsx +87 -0
  577. package/src/components/docs/components-gallery.tsx +182 -0
  578. package/src/components/docs/demo-controls.tsx +6 -7
  579. package/src/components/docs/hero.tsx +2 -3
  580. package/src/components/icons/file-badge-cfm.tsx +2 -2
  581. package/src/components/icons/file-badge-corpus.tsx +2 -2
  582. package/src/components/icons/file-badge-pdf.tsx +2 -2
  583. package/src/components/icons/file-badge-tei.tsx +2 -2
  584. package/src/components/icons/file-badge-tf.tsx +2 -2
  585. package/src/components/icons/file-badge-txt.tsx +2 -2
  586. package/src/components/icons/file-badge-xml.tsx +2 -2
  587. package/src/components/icons/file-wordmark-cfm.tsx +2 -2
  588. package/src/components/icons/file-wordmark-corpus.tsx +2 -2
  589. package/src/components/icons/file-wordmark-pdf.tsx +2 -2
  590. package/src/components/icons/file-wordmark-tei.tsx +2 -2
  591. package/src/components/icons/file-wordmark-tf.tsx +2 -2
  592. package/src/components/icons/file-wordmark-txt.tsx +2 -2
  593. package/src/components/icons/file-wordmark-xml.tsx +2 -2
  594. package/src/components/icons/index.ts +1 -1
  595. package/src/components/icons/types.ts +1 -1
  596. package/src/components/motion/overflow-actions.tsx +19 -19
  597. package/src/components/motion/popover-morph.tsx +15 -15
  598. package/src/components/motion/popover-position.ts +4 -4
  599. package/src/components/motion/shared-layout-bg.tsx +2 -2
  600. package/src/components/stories/attachment.story.tsx +40 -0
  601. package/src/components/stories/auth-flow-block.story.tsx +17 -0
  602. package/src/components/stories/avatar.story.tsx +33 -0
  603. package/src/components/stories/base.story.tsx +70 -0
  604. package/src/components/stories/bubble.story.tsx +61 -0
  605. package/src/components/stories/button.story.tsx +32 -0
  606. package/src/components/stories/card.story.tsx +36 -0
  607. package/src/components/stories/chart.story.tsx +69 -0
  608. package/src/components/stories/checkbox.story.tsx +30 -0
  609. package/src/components/stories/code-auth-block.story.tsx +20 -0
  610. package/src/components/stories/code-block.story.tsx +35 -0
  611. package/src/components/stories/composed-password-input.story.tsx +41 -0
  612. package/src/components/stories/context-cards.story.tsx +30 -0
  613. package/src/components/stories/emoji-action-bar.story.tsx +20 -0
  614. package/src/components/stories/field.story.tsx +32 -0
  615. package/src/components/stories/file-icons.story.tsx +20 -0
  616. package/src/components/stories/filter-table.story.tsx +63 -0
  617. package/src/components/stories/flowchart.story.tsx +25 -0
  618. package/src/components/stories/forgot-password-block.story.tsx +14 -0
  619. package/src/components/stories/frame.story.tsx +32 -0
  620. package/src/components/stories/index.ts +57 -0
  621. package/src/components/stories/input-group.story.tsx +27 -0
  622. package/src/components/stories/input.story.tsx +42 -0
  623. package/src/components/stories/insight-cards.story.tsx +67 -0
  624. package/src/components/stories/label.story.tsx +32 -0
  625. package/src/components/stories/linked-accounts-block.story.tsx +23 -0
  626. package/src/components/stories/login-block.story.tsx +18 -0
  627. package/src/components/stories/logo.story.tsx +21 -0
  628. package/src/components/stories/markdown.story.tsx +31 -0
  629. package/src/components/stories/menu-command.story.tsx +43 -0
  630. package/src/components/stories/onboarding-block.story.tsx +14 -0
  631. package/src/components/stories/otp-field.story.tsx +35 -0
  632. package/src/components/stories/passkey-manager-block.story.tsx +18 -0
  633. package/src/components/stories/passkey-sign-in-block.story.tsx +15 -0
  634. package/src/components/stories/password-input.story.tsx +35 -0
  635. package/src/components/stories/profile-card-block.story.tsx +29 -0
  636. package/src/components/stories/recommendation-card.story.tsx +37 -0
  637. package/src/components/stories/records-table.story.tsx +52 -0
  638. package/src/components/stories/reference.story.tsx +33 -0
  639. package/src/components/stories/research-answer.story.tsx +32 -0
  640. package/src/components/stories/scaffold-root.story.tsx +47 -0
  641. package/src/components/stories/separator.story.tsx +37 -0
  642. package/src/components/stories/shell-layout.story.tsx +19 -0
  643. package/src/components/stories/signup-block.story.tsx +18 -0
  644. package/src/components/stories/social-providers.story.tsx +26 -0
  645. package/src/components/stories/streaming-text.story.tsx +25 -0
  646. package/src/components/stories/text.story.tsx +31 -0
  647. package/src/components/stories/textarea.story.tsx +34 -0
  648. package/src/components/stories/tree.story.tsx +31 -0
  649. package/src/components/stories/update-password-block.story.tsx +14 -0
  650. package/src/components/stories/user.story.tsx +32 -0
  651. package/src/components/stories/verse.story.tsx +42 -0
  652. package/src/components/theme-provider.tsx +16 -16
  653. package/src/components/types.ts +106 -0
  654. package/src/components/ui/badge.tsx +3 -3
  655. package/src/components/ui/button.tsx +15 -22
  656. package/src/components/ui/chat/avatar-handle.tsx +2 -2
  657. package/src/components/ui/chat/badges.tsx +2 -2
  658. package/src/components/ui/chat/buttons.tsx +7 -7
  659. package/src/components/ui/chat/chips.tsx +11 -11
  660. package/src/components/ui/chat/dot.tsx +8 -8
  661. package/src/components/ui/chat/icon-button.tsx +3 -3
  662. package/src/components/ui/chat/icon-tile.tsx +2 -2
  663. package/src/components/ui/chat/index.ts +12 -12
  664. package/src/components/ui/chat/inline-source.tsx +2 -2
  665. package/src/components/ui/chat/segmented-toggle.tsx +4 -4
  666. package/src/components/ui/chat/tag.tsx +10 -10
  667. package/src/components/ui/chat/thumbnail.tsx +2 -2
  668. package/src/components/ui/chat/waveform.tsx +2 -2
  669. package/src/components/ui/field.tsx +3 -3
  670. package/src/components/ui/glasscn/glass-button-group.tsx +7 -21
  671. package/src/components/ui/glasscn/glass-button.tsx +5 -5
  672. package/src/components/ui/glasscn/glass-container.tsx +10 -47
  673. package/src/components/ui/glasscn/glass-separator.tsx +6 -6
  674. package/src/components/ui/glasscn/liquid-glass.tsx +43 -300
  675. package/src/components/ui/input-group.tsx +4 -4
  676. package/src/components/ui/input.tsx +2 -2
  677. package/src/components/ui/menu-command.tsx +103 -75
  678. package/src/components/ui/popover-glass.tsx +11 -14
  679. package/src/components/ui/select.tsx +2 -2
  680. package/src/components/ui/tabs.tsx +12 -12
  681. package/src/components/ui/textarea.tsx +2 -2
  682. package/src/components/ui/toast.tsx +13 -13
  683. package/src/index.css +3 -1
  684. package/src/index.ts +3 -1
  685. package/src/lib/attachment-content.ts +28 -0
  686. package/src/lib/auth-accent.ts +2 -2
  687. package/src/lib/glass-variants.ts +19 -54
  688. package/src/lib/keyed-atom.ts +3 -3
  689. package/src/lib/segmented-control.ts +2 -2
  690. package/src/lib/specular.ts +10 -0
  691. package/src/lib/state/__tests__/sound.test.tsx +53 -0
  692. package/src/lib/state/exegia-provider.tsx +6 -6
  693. package/src/lib/state/index.ts +2 -2
  694. package/src/lib/state/store.ts +2 -2
  695. package/src/lib/use-motion-panel.ts +78 -0
  696. package/src/lib/utils.ts +7 -5
  697. package/src/specular.js +4 -0
  698. package/dist-lib/src/components/atoms/avatar/base.d.ts +0 -2
  699. package/dist-lib/src/components/atoms/avatar/index.d.ts +0 -2
  700. package/dist-lib/src/components/atoms/avatar/types.d.ts +0 -20
  701. package/dist-lib/src/components/atoms/avatar/utils.d.ts +0 -13
  702. package/dist-lib/src/components/atoms/background/texture.d.ts +0 -2
  703. package/dist-lib/src/components/atoms/background/type.d.ts +0 -7
  704. package/dist-lib/src/components/atoms/background/utils.d.ts +0 -4
  705. package/dist-lib/src/components/atoms/bubble/actions.d.ts +0 -7
  706. package/dist-lib/src/components/atoms/bubble/context.d.ts +0 -4
  707. package/dist-lib/src/components/atoms/bubble/default.d.ts +0 -3
  708. package/dist-lib/src/components/atoms/bubble/header.d.ts +0 -8
  709. package/dist-lib/src/components/atoms/bubble/index.d.ts +0 -16
  710. package/dist-lib/src/components/atoms/bubble/message.d.ts +0 -3
  711. package/dist-lib/src/components/atoms/bubble/reactions.d.ts +0 -14
  712. package/dist-lib/src/components/atoms/bubble/types.d.ts +0 -59
  713. package/dist-lib/src/components/atoms/bubble/utils.d.ts +0 -13
  714. package/dist-lib/src/components/atoms/index.d.ts +0 -15
  715. package/dist-lib/src/components/atoms/loader.d.ts +0 -8
  716. package/dist-lib/src/components/atoms/reference.d.ts +0 -7
  717. package/dist-lib/src/components/atoms/text/default.d.ts +0 -1144
  718. package/dist-lib/src/components/atoms/text/heading.d.ts +0 -4
  719. package/dist-lib/src/components/atoms/text/index.d.ts +0 -21
  720. package/dist-lib/src/components/atoms/text/label.d.ts +0 -2
  721. package/dist-lib/src/components/atoms/text/paragraph.d.ts +0 -4
  722. package/dist-lib/src/components/atoms/text/span.d.ts +0 -3
  723. package/dist-lib/src/components/atoms/text/types.d.ts +0 -23
  724. package/dist-lib/src/components/atoms/text/utils.d.ts +0 -4
  725. package/dist-lib/src/components/atoms/text-selection/click-popover.d.ts +0 -3
  726. package/dist-lib/src/components/atoms/text-selection/index.d.ts +0 -6
  727. package/dist-lib/src/components/atoms/text-selection/popover.d.ts +0 -3
  728. package/dist-lib/src/components/atoms/text-selection/selection-atom.d.ts +0 -30
  729. package/dist-lib/src/components/atoms/text-selection/selection.d.ts +0 -3
  730. package/dist-lib/src/components/atoms/text-selection/types.d.ts +0 -90
  731. package/dist-lib/src/components/atoms/text-selection/use-selection.d.ts +0 -7
  732. package/dist-lib/src/components/atoms/types.d.ts +0 -17
  733. package/dist-lib/src/components/blocks/auth/auth-flow-atom.d.ts +0 -77
  734. package/dist-lib/src/components/blocks/auth/auth-flow-block.d.ts +0 -123
  735. package/dist-lib/src/components/blocks/auth/auth-flow-block.story.d.ts +0 -3
  736. package/dist-lib/src/components/blocks/auth/auth-session-atom.d.ts +0 -28
  737. package/dist-lib/src/components/blocks/auth/auth-shell.d.ts +0 -56
  738. package/dist-lib/src/components/blocks/auth/auth-state-type.d.ts +0 -71
  739. package/dist-lib/src/components/blocks/auth/auth-state.d.ts +0 -9
  740. package/dist-lib/src/components/blocks/auth/code-auth-block.d.ts +0 -22
  741. package/dist-lib/src/components/blocks/auth/code-auth-block.story.d.ts +0 -3
  742. package/dist-lib/src/components/blocks/auth/forgot-password-block.d.ts +0 -15
  743. package/dist-lib/src/components/blocks/auth/forgot-password-block.story.d.ts +0 -3
  744. package/dist-lib/src/components/blocks/auth/linked-accounts-block.d.ts +0 -36
  745. package/dist-lib/src/components/blocks/auth/linked-accounts-block.story.d.ts +0 -3
  746. package/dist-lib/src/components/blocks/auth/login-block.d.ts +0 -25
  747. package/dist-lib/src/components/blocks/auth/login-block.story.d.ts +0 -3
  748. package/dist-lib/src/components/blocks/auth/onboarding/profile-step.d.ts +0 -19
  749. package/dist-lib/src/components/blocks/auth/onboarding-block.d.ts +0 -69
  750. package/dist-lib/src/components/blocks/auth/onboarding-block.story.d.ts +0 -3
  751. package/dist-lib/src/components/blocks/auth/passkey-manager-block.d.ts +0 -38
  752. package/dist-lib/src/components/blocks/auth/passkey-manager-block.story.d.ts +0 -3
  753. package/dist-lib/src/components/blocks/auth/passkey-sign-in-block.d.ts +0 -27
  754. package/dist-lib/src/components/blocks/auth/passkey-sign-in-block.story.d.ts +0 -3
  755. package/dist-lib/src/components/blocks/auth/signup-block.d.ts +0 -41
  756. package/dist-lib/src/components/blocks/auth/signup-block.story.d.ts +0 -3
  757. package/dist-lib/src/components/blocks/auth/update-password-block.d.ts +0 -28
  758. package/dist-lib/src/components/blocks/auth/update-password-block.story.d.ts +0 -3
  759. package/dist-lib/src/components/blocks/auth/use-auth-state.d.ts +0 -52
  760. package/dist-lib/src/components/blocks/chat/banners.d.ts +0 -13
  761. package/dist-lib/src/components/blocks/chat/base.d.ts +0 -10
  762. package/dist-lib/src/components/blocks/chat/base.story.d.ts +0 -3
  763. package/dist-lib/src/components/blocks/chat/header.d.ts +0 -4
  764. package/dist-lib/src/components/blocks/chat/index.d.ts +0 -13
  765. package/dist-lib/src/components/blocks/chat/recommendation-stack.d.ts +0 -13
  766. package/dist-lib/src/components/blocks/chat/suggested-prompts.d.ts +0 -3
  767. package/dist-lib/src/components/blocks/chat/types.d.ts +0 -64
  768. package/dist-lib/src/components/blocks/chat/version-history-record.d.ts +0 -3
  769. package/dist-lib/src/components/blocks/layout.d.ts +0 -8
  770. package/dist-lib/src/components/blocks/nav/sidebar/ai-sidebar-atom.d.ts +0 -217
  771. package/dist-lib/src/components/blocks/nav/sidebar/ai-sidebar.d.ts +0 -11
  772. package/dist-lib/src/components/blocks/nav/sidebar/index.d.ts +0 -15
  773. package/dist-lib/src/components/blocks/nav/sidebar/sidebar-context.d.ts +0 -3
  774. package/dist-lib/src/components/blocks/nav/sidebar/sidebar-icon.d.ts +0 -2
  775. package/dist-lib/src/components/blocks/nav/sidebar/sidebar-row.d.ts +0 -4
  776. package/dist-lib/src/components/blocks/nav/sidebar/type.d.ts +0 -245
  777. package/dist-lib/src/components/blocks/nav/sidebar/use-ai-sidebar-state.d.ts +0 -29
  778. package/dist-lib/src/components/blocks/nav/sidebar/use-ai-sidebar.d.ts +0 -27
  779. package/dist-lib/src/components/blocks/nav/sidebar/utils.d.ts +0 -21
  780. package/dist-lib/src/components/blocks/profile/index.d.ts +0 -7
  781. package/dist-lib/src/components/blocks/profile/profile-card-atom.d.ts +0 -68
  782. package/dist-lib/src/components/blocks/profile/profile-card-block.d.ts +0 -66
  783. package/dist-lib/src/components/blocks/profile/profile-card-block.story.d.ts +0 -3
  784. package/dist-lib/src/components/blocks/profile/type.d.ts +0 -80
  785. package/dist-lib/src/components/blocks/profile/use-profile-card-state.d.ts +0 -24
  786. package/dist-lib/src/components/blocks/profile/use-profile-card.d.ts +0 -34
  787. package/dist-lib/src/components/blocks/scaffold/index.d.ts +0 -29
  788. package/dist-lib/src/components/blocks/scaffold/panel-close-button.d.ts +0 -4
  789. package/dist-lib/src/components/blocks/scaffold/panel-menu-button.d.ts +0 -8
  790. package/dist-lib/src/components/blocks/scaffold/scaffold-actions.d.ts +0 -10
  791. package/dist-lib/src/components/blocks/scaffold/scaffold-atom.d.ts +0 -97
  792. package/dist-lib/src/components/blocks/scaffold/scaffold-canvas.d.ts +0 -9
  793. package/dist-lib/src/components/blocks/scaffold/scaffold-context.d.ts +0 -7
  794. package/dist-lib/src/components/blocks/scaffold/scaffold-inspector.d.ts +0 -9
  795. package/dist-lib/src/components/blocks/scaffold/scaffold-main.d.ts +0 -8
  796. package/dist-lib/src/components/blocks/scaffold/scaffold-panel.d.ts +0 -10
  797. package/dist-lib/src/components/blocks/scaffold/scaffold-root.d.ts +0 -17
  798. package/dist-lib/src/components/blocks/scaffold/scaffold-root.story.d.ts +0 -3
  799. package/dist-lib/src/components/blocks/scaffold/scaffold-sidebar.d.ts +0 -7
  800. package/dist-lib/src/components/blocks/scaffold/scaffold-sub-panel.d.ts +0 -3
  801. package/dist-lib/src/components/blocks/scaffold/scaffold-tab.d.ts +0 -14
  802. package/dist-lib/src/components/blocks/scaffold/type.d.ts +0 -203
  803. package/dist-lib/src/components/blocks/scaffold/use-scaffold-state.d.ts +0 -26
  804. package/dist-lib/src/components/blocks/scaffold/use-scaffold.d.ts +0 -14
  805. package/dist-lib/src/components/blocks/scaffold/utils.d.ts +0 -37
  806. package/dist-lib/src/components/blocks/shell/animated-panel-inset.d.ts +0 -2
  807. package/dist-lib/src/components/blocks/shell/animated-panel-provider.d.ts +0 -2
  808. package/dist-lib/src/components/blocks/shell/animated-panel-trigger.d.ts +0 -2
  809. package/dist-lib/src/components/blocks/shell/animated-panel.d.ts +0 -2
  810. package/dist-lib/src/components/blocks/shell/shell-fit-atom.d.ts +0 -68
  811. package/dist-lib/src/components/blocks/shell/shell-layout.d.ts +0 -3
  812. package/dist-lib/src/components/blocks/shell/shell-layout.story.d.ts +0 -3
  813. package/dist-lib/src/components/blocks/shell/shell-metrics.d.ts +0 -54
  814. package/dist-lib/src/components/blocks/shell/type.d.ts +0 -292
  815. package/dist-lib/src/components/blocks/shell/use-shell-fit-state.d.ts +0 -25
  816. package/dist-lib/src/components/blocks/shell/use-shell-fit.d.ts +0 -14
  817. package/dist-lib/src/components/blocks/shell/use-shell-panels.d.ts +0 -20
  818. package/dist-lib/src/components/blocks/shell/utils.d.ts +0 -70
  819. package/dist-lib/src/components/composed/action-bar/action.d.ts +0 -18
  820. package/dist-lib/src/components/composed/action-bar/emojis.d.ts +0 -10
  821. package/dist-lib/src/components/composed/action-bar/index.d.ts +0 -12
  822. package/dist-lib/src/components/composed/action-bar/toolbar.d.ts +0 -2
  823. package/dist-lib/src/components/composed/action-bar/types.d.ts +0 -55
  824. package/dist-lib/src/components/composed/action-bar/utils.d.ts +0 -57
  825. package/dist-lib/src/components/composed/ai/index.d.ts +0 -17
  826. package/dist-lib/src/components/composed/ai/message.d.ts +0 -7
  827. package/dist-lib/src/components/composed/ai/research-answer.d.ts +0 -30
  828. package/dist-lib/src/components/composed/ai/streaming-text.d.ts +0 -26
  829. package/dist-lib/src/components/composed/ai/suggested-prompt.d.ts +0 -35
  830. package/dist-lib/src/components/composed/ai/types.d.ts +0 -66
  831. package/dist-lib/src/components/composed/attachment.story.d.ts +0 -3
  832. package/dist-lib/src/components/composed/chart.story.d.ts +0 -3
  833. package/dist-lib/src/components/composed/chat/attachment.d.ts +0 -62
  834. package/dist-lib/src/components/composed/chat/chart.d.ts +0 -41
  835. package/dist-lib/src/components/composed/chat/code-block.d.ts +0 -26
  836. package/dist-lib/src/components/composed/chat/composer/add-button.d.ts +0 -5
  837. package/dist-lib/src/components/composed/chat/composer/base.d.ts +0 -8
  838. package/dist-lib/src/components/composed/chat/composer/command-menu.d.ts +0 -2
  839. package/dist-lib/src/components/composed/chat/composer/hooks.d.ts +0 -9
  840. package/dist-lib/src/components/composed/chat/composer/send-button.d.ts +0 -3
  841. package/dist-lib/src/components/composed/chat/composer/suggestions.d.ts +0 -7
  842. package/dist-lib/src/components/composed/chat/composer/utils.d.ts +0 -19
  843. package/dist-lib/src/components/composed/chat/context-cards.d.ts +0 -27
  844. package/dist-lib/src/components/composed/chat/filter-table.d.ts +0 -40
  845. package/dist-lib/src/components/composed/chat/flowchart/chart-node.d.ts +0 -2
  846. package/dist-lib/src/components/composed/chat/flowchart/connector.d.ts +0 -2
  847. package/dist-lib/src/components/composed/chat/flowchart/default.d.ts +0 -7
  848. package/dist-lib/src/components/composed/chat/flowchart/edge-toolbar.d.ts +0 -9
  849. package/dist-lib/src/components/composed/chat/flowchart/hooks.d.ts +0 -290
  850. package/dist-lib/src/components/composed/chat/flowchart/step-body.d.ts +0 -6
  851. package/dist-lib/src/components/composed/chat/flowchart/types.d.ts +0 -91
  852. package/dist-lib/src/components/composed/chat/flowchart/utils.d.ts +0 -64
  853. package/dist-lib/src/components/composed/chat/index.d.ts +0 -15
  854. package/dist-lib/src/components/composed/chat/insight-cards.d.ts +0 -54
  855. package/dist-lib/src/components/composed/chat/markdown-atom.d.ts +0 -7
  856. package/dist-lib/src/components/composed/chat/markdown.d.ts +0 -22
  857. package/dist-lib/src/components/composed/chat/recommendation/checkbox.d.ts +0 -15
  858. package/dist-lib/src/components/composed/chat/recommendation/constant.d.ts +0 -6
  859. package/dist-lib/src/components/composed/chat/recommendation/default.d.ts +0 -7
  860. package/dist-lib/src/components/composed/chat/recommendation/group.d.ts +0 -8
  861. package/dist-lib/src/components/composed/chat/recommendation/index.d.ts +0 -15
  862. package/dist-lib/src/components/composed/chat/recommendation/item.d.ts +0 -12
  863. package/dist-lib/src/components/composed/chat/recommendation/types.d.ts +0 -53
  864. package/dist-lib/src/components/composed/chat/records-table.d.ts +0 -38
  865. package/dist-lib/src/components/composed/chat/type.d.ts +0 -86
  866. package/dist-lib/src/components/composed/code-block.story.d.ts +0 -3
  867. package/dist-lib/src/components/composed/context-cards.story.d.ts +0 -3
  868. package/dist-lib/src/components/composed/emoji-action-bar.story.d.ts +0 -3
  869. package/dist-lib/src/components/composed/filter-table.story.d.ts +0 -7
  870. package/dist-lib/src/components/composed/flowchart.story.d.ts +0 -3
  871. package/dist-lib/src/components/composed/insight-cards.story.d.ts +0 -3
  872. package/dist-lib/src/components/composed/logo.d.ts +0 -34
  873. package/dist-lib/src/components/composed/logo.story.d.ts +0 -3
  874. package/dist-lib/src/components/composed/markdown.story.d.ts +0 -3
  875. package/dist-lib/src/components/composed/password-input.d.ts +0 -30
  876. package/dist-lib/src/components/composed/password-input.story.d.ts +0 -7
  877. package/dist-lib/src/components/composed/reader/applied-mark.d.ts +0 -3
  878. package/dist-lib/src/components/composed/reader/apply-toast.d.ts +0 -3
  879. package/dist-lib/src/components/composed/reader/selection-highlight.d.ts +0 -3
  880. package/dist-lib/src/components/composed/reader/selection-popover.d.ts +0 -9
  881. package/dist-lib/src/components/composed/reader/type.d.ts +0 -40
  882. package/dist-lib/src/components/composed/recommendation-card.story.d.ts +0 -3
  883. package/dist-lib/src/components/composed/records-table.story.d.ts +0 -3
  884. package/dist-lib/src/components/composed/research-answer.story.d.ts +0 -3
  885. package/dist-lib/src/components/composed/social-providers.d.ts +0 -37
  886. package/dist-lib/src/components/composed/social-providers.story.d.ts +0 -3
  887. package/dist-lib/src/components/composed/streaming-text.story.d.ts +0 -3
  888. package/dist-lib/src/components/composed/tree/index.d.ts +0 -6
  889. package/dist-lib/src/components/composed/tree/tree-atom.d.ts +0 -160
  890. package/dist-lib/src/components/composed/tree/tree-context.d.ts +0 -4
  891. package/dist-lib/src/components/composed/tree/tree-node.d.ts +0 -12
  892. package/dist-lib/src/components/composed/tree/tree.d.ts +0 -19
  893. package/dist-lib/src/components/composed/tree/type.d.ts +0 -290
  894. package/dist-lib/src/components/composed/tree/use-tree-dnd.d.ts +0 -18
  895. package/dist-lib/src/components/composed/tree/use-tree-state.d.ts +0 -25
  896. package/dist-lib/src/components/composed/tree/use-tree.d.ts +0 -24
  897. package/dist-lib/src/components/composed/tree/utils.d.ts +0 -28
  898. package/dist-lib/src/components/composed/tree.story.d.ts +0 -6
  899. package/dist-lib/src/components/composed/user/index.d.ts +0 -11
  900. package/dist-lib/src/components/composed/user/info.d.ts +0 -12
  901. package/dist-lib/src/components/composed/user/message.d.ts +0 -3
  902. package/dist-lib/src/components/composed/user/pill.d.ts +0 -10
  903. package/dist-lib/src/components/composed/user/types.d.ts +0 -20
  904. package/dist-lib/src/components/composed/user.story.d.ts +0 -8
  905. package/dist-lib/src/components/composed/verse/index.d.ts +0 -2
  906. package/dist-lib/src/components/composed/verse/types.d.ts +0 -18
  907. package/dist-lib/src/components/composed/verse/verse.d.ts +0 -5
  908. package/dist-lib/src/components/composed/verse.story.d.ts +0 -3
  909. package/dist-lib/src/components/docs/atoms-gallery.d.ts +0 -3
  910. package/dist-lib/src/components/docs/demo-controls.d.ts +0 -21
  911. package/dist-lib/src/components/icons/file-badge-cfm.d.ts +0 -7
  912. package/dist-lib/src/components/icons/file-badge-corpus.d.ts +0 -7
  913. package/dist-lib/src/components/icons/file-badge-pdf.d.ts +0 -7
  914. package/dist-lib/src/components/icons/file-badge-tei.d.ts +0 -7
  915. package/dist-lib/src/components/icons/file-badge-tf.d.ts +0 -7
  916. package/dist-lib/src/components/icons/file-badge-txt.d.ts +0 -7
  917. package/dist-lib/src/components/icons/file-badge-xml.d.ts +0 -7
  918. package/dist-lib/src/components/icons/file-wordmark-cfm.d.ts +0 -7
  919. package/dist-lib/src/components/icons/file-wordmark-corpus.d.ts +0 -7
  920. package/dist-lib/src/components/icons/file-wordmark-pdf.d.ts +0 -7
  921. package/dist-lib/src/components/icons/file-wordmark-tei.d.ts +0 -7
  922. package/dist-lib/src/components/icons/file-wordmark-tf.d.ts +0 -7
  923. package/dist-lib/src/components/icons/file-wordmark-txt.d.ts +0 -7
  924. package/dist-lib/src/components/icons/file-wordmark-xml.d.ts +0 -7
  925. package/dist-lib/src/components/icons/index.d.ts +0 -15
  926. package/dist-lib/src/components/icons/types.d.ts +0 -7
  927. package/dist-lib/src/components/motion/overflow-actions.d.ts +0 -35
  928. package/dist-lib/src/components/motion/popover-morph.d.ts +0 -35
  929. package/dist-lib/src/components/motion/popover-position.d.ts +0 -15
  930. package/dist-lib/src/components/motion/shared-layout-bg.d.ts +0 -13
  931. package/dist-lib/src/components/theme-provider.d.ts +0 -15
  932. package/dist-lib/src/components/ui/avatar.story.d.ts +0 -7
  933. package/dist-lib/src/components/ui/badge.d.ts +0 -14
  934. package/dist-lib/src/components/ui/bubble.story.d.ts +0 -7
  935. package/dist-lib/src/components/ui/button.d.ts +0 -28
  936. package/dist-lib/src/components/ui/button.story.d.ts +0 -8
  937. package/dist-lib/src/components/ui/card.story.d.ts +0 -9
  938. package/dist-lib/src/components/ui/chat/avatar-handle.d.ts +0 -13
  939. package/dist-lib/src/components/ui/chat/badges.d.ts +0 -29
  940. package/dist-lib/src/components/ui/chat/buttons.d.ts +0 -29
  941. package/dist-lib/src/components/ui/chat/chips.d.ts +0 -48
  942. package/dist-lib/src/components/ui/chat/dot.d.ts +0 -30
  943. package/dist-lib/src/components/ui/chat/icon-button.d.ts +0 -18
  944. package/dist-lib/src/components/ui/chat/icon-tile.d.ts +0 -20
  945. package/dist-lib/src/components/ui/chat/index.d.ts +0 -12
  946. package/dist-lib/src/components/ui/chat/inline-source.d.ts +0 -20
  947. package/dist-lib/src/components/ui/chat/segmented-toggle.d.ts +0 -20
  948. package/dist-lib/src/components/ui/chat/tag.d.ts +0 -21
  949. package/dist-lib/src/components/ui/chat/thumbnail.d.ts +0 -13
  950. package/dist-lib/src/components/ui/chat/waveform.d.ts +0 -13
  951. package/dist-lib/src/components/ui/chat-atoms.story.d.ts +0 -22
  952. package/dist-lib/src/components/ui/checkbox.story.d.ts +0 -7
  953. package/dist-lib/src/components/ui/field.story.d.ts +0 -7
  954. package/dist-lib/src/components/ui/file-icons.story.d.ts +0 -7
  955. package/dist-lib/src/components/ui/frame.story.d.ts +0 -9
  956. package/dist-lib/src/components/ui/glasscn/glass-button-group.d.ts +0 -5
  957. package/dist-lib/src/components/ui/glasscn/glass-button.d.ts +0 -6
  958. package/dist-lib/src/components/ui/glasscn/glass-container.d.ts +0 -12
  959. package/dist-lib/src/components/ui/glasscn/glass-separator.d.ts +0 -5
  960. package/dist-lib/src/components/ui/glasscn/liquid-glass.d.ts +0 -31
  961. package/dist-lib/src/components/ui/input-group.d.ts +0 -13
  962. package/dist-lib/src/components/ui/input-group.story.d.ts +0 -7
  963. package/dist-lib/src/components/ui/input.d.ts +0 -9
  964. package/dist-lib/src/components/ui/input.story.d.ts +0 -9
  965. package/dist-lib/src/components/ui/label.story.d.ts +0 -9
  966. package/dist-lib/src/components/ui/menu-command.d.ts +0 -37
  967. package/dist-lib/src/components/ui/menu-command.story.d.ts +0 -7
  968. package/dist-lib/src/components/ui/otp-field.story.d.ts +0 -9
  969. package/dist-lib/src/components/ui/password-input.story.d.ts +0 -3
  970. package/dist-lib/src/components/ui/popover-glass.d.ts +0 -32
  971. package/dist-lib/src/components/ui/reference.story.d.ts +0 -10
  972. package/dist-lib/src/components/ui/select.d.ts +0 -30
  973. package/dist-lib/src/components/ui/separator.story.d.ts +0 -7
  974. package/dist-lib/src/components/ui/tabs.d.ts +0 -15
  975. package/dist-lib/src/components/ui/text.story.d.ts +0 -9
  976. package/dist-lib/src/components/ui/textarea.d.ts +0 -8
  977. package/dist-lib/src/components/ui/textarea.story.d.ts +0 -7
  978. package/dist-lib/src/components/ui/toast.d.ts +0 -15
  979. package/dist-lib/src/index.d.ts +0 -63
  980. package/dist-lib/src/lib/auth-accent.d.ts +0 -33
  981. package/dist-lib/src/lib/glass-variants.d.ts +0 -6
  982. package/dist-lib/src/lib/keyed-atom.d.ts +0 -14
  983. package/dist-lib/src/lib/segmented-control.d.ts +0 -8
  984. package/dist-lib/src/lib/state/exegia-provider.d.ts +0 -51
  985. package/dist-lib/src/lib/state/index.d.ts +0 -4
  986. package/dist-lib/src/lib/state/store.d.ts +0 -17
  987. package/src/components/blocks/auth/auth-flow-block.story.tsx +0 -17
  988. package/src/components/blocks/auth/auth-state-type.ts +0 -97
  989. package/src/components/blocks/auth/code-auth-block.story.tsx +0 -20
  990. package/src/components/blocks/auth/forgot-password-block.story.tsx +0 -14
  991. package/src/components/blocks/auth/linked-accounts-block.story.tsx +0 -23
  992. package/src/components/blocks/auth/login-block.story.tsx +0 -18
  993. package/src/components/blocks/auth/onboarding-block.story.tsx +0 -14
  994. package/src/components/blocks/auth/passkey-manager-block.story.tsx +0 -18
  995. package/src/components/blocks/auth/passkey-sign-in-block.story.tsx +0 -14
  996. package/src/components/blocks/auth/signup-block.story.tsx +0 -18
  997. package/src/components/blocks/auth/update-password-block.story.tsx +0 -14
  998. package/src/components/blocks/chat/base.story.tsx +0 -19
  999. package/src/components/blocks/chat/types.ts +0 -81
  1000. package/src/components/blocks/nav/sidebar/__tests__/ai-sidebar-atom.test.tsx +0 -325
  1001. package/src/components/blocks/nav/sidebar/__tests__/ai-sidebar.test.tsx +0 -93
  1002. package/src/components/blocks/nav/sidebar/__tests__/use-ai-sidebar.test.tsx +0 -310
  1003. package/src/components/blocks/nav/sidebar/ai-sidebar-atom.ts +0 -698
  1004. package/src/components/blocks/nav/sidebar/ai-sidebar.tsx +0 -150
  1005. package/src/components/blocks/nav/sidebar/index.ts +0 -67
  1006. package/src/components/blocks/nav/sidebar/sidebar-context.ts +0 -15
  1007. package/src/components/blocks/nav/sidebar/sidebar-icon.tsx +0 -14
  1008. package/src/components/blocks/nav/sidebar/sidebar-row.tsx +0 -378
  1009. package/src/components/blocks/nav/sidebar/type.ts +0 -294
  1010. package/src/components/blocks/nav/sidebar/use-ai-sidebar-state.ts +0 -123
  1011. package/src/components/blocks/nav/sidebar/use-ai-sidebar.ts +0 -619
  1012. package/src/components/blocks/nav/sidebar/utils.ts +0 -170
  1013. package/src/components/blocks/profile/profile-card-block.story.tsx +0 -18
  1014. package/src/components/blocks/scaffold/scaffold-root.story.tsx +0 -36
  1015. package/src/components/blocks/shell/shell-layout.story.tsx +0 -19
  1016. package/src/components/composed/attachment.story.tsx +0 -52
  1017. package/src/components/composed/chart.story.tsx +0 -46
  1018. package/src/components/composed/code-block.story.tsx +0 -29
  1019. package/src/components/composed/context-cards.story.tsx +0 -30
  1020. package/src/components/composed/emoji-action-bar.story.tsx +0 -20
  1021. package/src/components/composed/filter-table.story.tsx +0 -58
  1022. package/src/components/composed/flowchart.story.tsx +0 -24
  1023. package/src/components/composed/insight-cards.story.tsx +0 -51
  1024. package/src/components/composed/logo.story.tsx +0 -21
  1025. package/src/components/composed/markdown.story.tsx +0 -21
  1026. package/src/components/composed/password-input.story.tsx +0 -38
  1027. package/src/components/composed/recommendation-card.story.tsx +0 -32
  1028. package/src/components/composed/records-table.story.tsx +0 -46
  1029. package/src/components/composed/research-answer.story.tsx +0 -32
  1030. package/src/components/composed/social-providers.story.tsx +0 -24
  1031. package/src/components/composed/streaming-text.story.tsx +0 -24
  1032. package/src/components/composed/tree.story.tsx +0 -31
  1033. package/src/components/composed/user.story.tsx +0 -29
  1034. package/src/components/composed/verse.story.tsx +0 -21
  1035. package/src/components/ui/avatar.story.tsx +0 -33
  1036. package/src/components/ui/bubble.story.tsx +0 -45
  1037. package/src/components/ui/button.story.tsx +0 -62
  1038. package/src/components/ui/card.story.tsx +0 -36
  1039. package/src/components/ui/chat-atoms.story.tsx +0 -94
  1040. package/src/components/ui/checkbox.story.tsx +0 -30
  1041. package/src/components/ui/field.story.tsx +0 -32
  1042. package/src/components/ui/file-icons.story.tsx +0 -24
  1043. package/src/components/ui/frame.story.tsx +0 -32
  1044. package/src/components/ui/input-group.story.tsx +0 -27
  1045. package/src/components/ui/input.story.tsx +0 -42
  1046. package/src/components/ui/label.story.tsx +0 -32
  1047. package/src/components/ui/menu-command.story.tsx +0 -37
  1048. package/src/components/ui/otp-field.story.tsx +0 -35
  1049. package/src/components/ui/password-input.story.tsx +0 -19
  1050. package/src/components/ui/reference.story.tsx +0 -33
  1051. package/src/components/ui/separator.story.tsx +0 -34
  1052. package/src/components/ui/text.story.tsx +0 -31
  1053. package/src/components/ui/textarea.story.tsx +0 -34
  1054. /package/dist-lib/{src/components → components}/atoms/_layout.d.ts +0 -0
  1055. /package/dist-lib/{src/components → components}/atoms/avatar/verified.d.ts +0 -0
  1056. /package/dist-lib/{src/components → components}/atoms/background/index.d.ts +0 -0
  1057. /package/dist-lib/{src/components → components}/atoms/bubble/__tests__/bubble.test.d.ts +0 -0
  1058. /package/dist-lib/{src/components → components}/atoms/bubble/__tests__/reference.test.d.ts +0 -0
  1059. /package/dist-lib/{src/components → components}/atoms/chip.d.ts +0 -0
  1060. /package/dist-lib/{src/components → components}/atoms/text/__tests__/text.test.d.ts +0 -0
  1061. /package/dist-lib/{src/components → components}/atoms/text-selection/__tests__/click-popover.test.d.ts +0 -0
  1062. /package/dist-lib/{src/components → components}/atoms/text-selection/__tests__/text-selection.test.d.ts +0 -0
  1063. /package/dist-lib/{src/components → components}/blocks/auth/__tests__/auth-flow-block.test.d.ts +0 -0
  1064. /package/dist-lib/{src/components → components}/blocks/auth/__tests__/auth-state-atom.test.d.ts +0 -0
  1065. /package/dist-lib/{src/components → components}/blocks/auth/__tests__/linked-accounts-block.test.d.ts +0 -0
  1066. /package/dist-lib/{src/components → components}/blocks/auth/__tests__/onboarding-block.test.d.ts +0 -0
  1067. /package/dist-lib/{src/components → components}/blocks/auth/__tests__/passkey-manager-block.test.d.ts +0 -0
  1068. /package/dist-lib/{src/components → components}/blocks/auth/__tests__/passkey-sign-in-block.test.d.ts +0 -0
  1069. /package/dist-lib/{src/components → components}/blocks/auth/__tests__/signup-block.test.d.ts +0 -0
  1070. /package/dist-lib/{src/components → components}/blocks/auth/__tests__/update-password-block.test.d.ts +0 -0
  1071. /package/dist-lib/{src/components → components}/blocks/chat/__tests__/ai-panel.test.d.ts +0 -0
  1072. /package/dist-lib/{src/components → components}/blocks/chat/shared.d.ts +0 -0
  1073. /package/dist-lib/{src/components → components}/blocks/profile/__tests__/profile-card-block.test.d.ts +0 -0
  1074. /package/dist-lib/{src/components → components}/blocks/scaffold/__tests__/scaffold-atom.test.d.ts +0 -0
  1075. /package/dist-lib/{src/components → components}/blocks/scaffold/__tests__/scaffold.test.d.ts +0 -0
  1076. /package/dist-lib/{src/components → components}/blocks/scaffold/constants.d.ts +0 -0
  1077. /package/dist-lib/{src/components → components}/blocks/shell/__tests__/shell-fit-atom.test.d.ts +0 -0
  1078. /package/dist-lib/{src/components → components}/blocks/shell/__tests__/shell-layout.test.d.ts +0 -0
  1079. /package/dist-lib/{src/components → components}/blocks/shell/__tests__/shell-metrics.test.d.ts +0 -0
  1080. /package/dist-lib/{src/components → components}/blocks/shell/index.d.ts +0 -0
  1081. /package/dist-lib/{src/components/blocks/nav → components/blocks}/sidebar/__tests__/ai-sidebar-atom.test.d.ts +0 -0
  1082. /package/dist-lib/{src/components/blocks/nav → components/blocks}/sidebar/__tests__/ai-sidebar.test.d.ts +0 -0
  1083. /package/dist-lib/{src/components/blocks/nav → components/blocks}/sidebar/__tests__/use-ai-sidebar.test.d.ts +0 -0
  1084. /package/dist-lib/{src/components/blocks/nav → components/blocks}/sidebar/marquee-label.d.ts +0 -0
  1085. /package/dist-lib/{src/components → components}/composed/__tests__/logo.test.d.ts +0 -0
  1086. /package/dist-lib/{src/components → components}/composed/action-bar/__tests__/action-bar.test.d.ts +0 -0
  1087. /package/dist-lib/{src/components → components}/composed/ai/__tests__/ai.test.d.ts +0 -0
  1088. /package/dist-lib/{src/components → components}/composed/ai/avatar.d.ts +0 -0
  1089. /package/dist-lib/{src/components → components}/composed/ai/shared.d.ts +0 -0
  1090. /package/dist-lib/{src/components → components}/composed/chat/__tests__/attachment.test.d.ts +0 -0
  1091. /package/dist-lib/{src/components → components}/composed/chat/__tests__/beautiful-ui.test.d.ts +0 -0
  1092. /package/dist-lib/{src/components → components}/composed/chat/__tests__/chart.test.d.ts +0 -0
  1093. /package/dist-lib/{src/components → components}/composed/chat/__tests__/code-block.test.d.ts +0 -0
  1094. /package/dist-lib/{src/components → components}/composed/chat/__tests__/composer-attachments.test.d.ts +0 -0
  1095. /package/dist-lib/{src/components → components}/composed/chat/__tests__/composer.test.d.ts +0 -0
  1096. /package/dist-lib/{src/components → components}/composed/chat/__tests__/flowchart.test.d.ts +0 -0
  1097. /package/dist-lib/{src/components/composed/chat/__tests__/markdown.test.d.ts → components/composed/chat/__tests__/glass-material.test.d.ts} +0 -0
  1098. /package/dist-lib/{src/components/composed/tree/__tests__/tree-atom.test.d.ts → components/composed/chat/__tests__/markdown.test.d.ts} +0 -0
  1099. /package/dist-lib/{src/components/composed/tree/__tests__/tree.test.d.ts → components/composed/chat/__tests__/menu-command.test.d.ts} +0 -0
  1100. /package/dist-lib/{src/components/composed/tree/__tests__/use-tree.test.d.ts → components/composed/chat/__tests__/recommendation.test.d.ts} +0 -0
  1101. /package/dist-lib/{src/components → components}/composed/chat/actions.d.ts +0 -0
  1102. /package/dist-lib/{src/components → components}/composed/chat/composer/index.d.ts +0 -0
  1103. /package/dist-lib/{src/components → components}/composed/chat/flowchart/constant.d.ts +0 -0
  1104. /package/dist-lib/{src/components → components}/composed/chat/flowchart/index.d.ts +0 -0
  1105. /package/dist-lib/{src/components → components}/composed/chat/hint.d.ts +0 -0
  1106. /package/dist-lib/{src/components → components}/composed/reader/index.d.ts +0 -0
  1107. /package/dist-lib/{src/components/composed/user/utils.d.ts → components/composed/tree/__tests__/tree-atom.test.d.ts} +0 -0
  1108. /package/dist-lib/{src/components/composed/verse/__tests__/verse.test.d.ts → components/composed/tree/__tests__/tree.test.d.ts} +0 -0
  1109. /package/dist-lib/{src/components/icons/__tests__/icons.test.d.ts → components/composed/tree/__tests__/use-tree.test.d.ts} +0 -0
  1110. /package/dist-lib/{src/components → components}/composed/tree/constants.d.ts +0 -0
  1111. /package/dist-lib/{src/components/motion/index.d.ts → components/composed/user/__tests__/message.test.d.ts} +0 -0
  1112. /package/dist-lib/{src/components/ui/chat/__tests__/segmented-toggle.test.d.ts → components/composed/user/utils.d.ts} +0 -0
  1113. /package/dist-lib/{src/lib/utils.test.d.ts → components/composed/verse/__tests__/verse.test.d.ts} +0 -0
  1114. /package/dist-lib/{src/components → components}/docs/code-block.d.ts +0 -0
  1115. /package/dist-lib/{src/components → components}/docs/hero.d.ts +0 -0
  1116. /package/dist-lib/{src/components → components}/docs/mermaid.d.ts +0 -0
  1117. /package/dist-lib/{src/components → components}/ui/accordion.d.ts +0 -0
  1118. /package/dist-lib/{src/components → components}/ui/alert-dialog.d.ts +0 -0
  1119. /package/dist-lib/{src/components → components}/ui/alert.d.ts +0 -0
  1120. /package/dist-lib/{src/components → components}/ui/autocomplete.d.ts +0 -0
  1121. /package/dist-lib/{src/components → components}/ui/avatar.d.ts +0 -0
  1122. /package/dist-lib/{src/components → components}/ui/button-group.d.ts +0 -0
  1123. /package/dist-lib/{src/components → components}/ui/card.d.ts +0 -0
  1124. /package/dist-lib/{src/components → components}/ui/checkbox.d.ts +0 -0
  1125. /package/dist-lib/{src/components → components}/ui/collapsible.d.ts +0 -0
  1126. /package/dist-lib/{src/components → components}/ui/command.d.ts +0 -0
  1127. /package/dist-lib/{src/components → components}/ui/context-menu.d.ts +0 -0
  1128. /package/dist-lib/{src/components → components}/ui/emoji-picker.d.ts +0 -0
  1129. /package/dist-lib/{src/components → components}/ui/field.d.ts +0 -0
  1130. /package/dist-lib/{src/components → components}/ui/frame.d.ts +0 -0
  1131. /package/dist-lib/{src/components → components}/ui/group.d.ts +0 -0
  1132. /package/dist-lib/{src/components → components}/ui/kbd.d.ts +0 -0
  1133. /package/dist-lib/{src/components → components}/ui/label.d.ts +0 -0
  1134. /package/dist-lib/{src/components → components}/ui/menu.d.ts +0 -0
  1135. /package/dist-lib/{src/components → components}/ui/otp-field.d.ts +0 -0
  1136. /package/dist-lib/{src/components → components}/ui/popover.d.ts +0 -0
  1137. /package/dist-lib/{src/components → components}/ui/preview-card.d.ts +0 -0
  1138. /package/dist-lib/{src/components → components}/ui/scroll-area.d.ts +0 -0
  1139. /package/dist-lib/{src/components → components}/ui/separator.d.ts +0 -0
  1140. /package/dist-lib/{src/components → components}/ui/sheet.d.ts +0 -0
  1141. /package/dist-lib/{src/components → components}/ui/skeleton.d.ts +0 -0
  1142. /package/dist-lib/{src/components → components}/ui/spinner.d.ts +0 -0
  1143. /package/dist-lib/{src/components → components}/ui/switch.d.ts +0 -0
  1144. /package/dist-lib/{src/components → components}/ui/toolbar.d.ts +0 -0
  1145. /package/dist-lib/{src/components → components}/ui/tooltip.d.ts +0 -0
  1146. /package/dist-lib/{src/lib → lib}/ease.d.ts +0 -0
  1147. /package/dist-lib/{src/lib → lib}/hooks/use-hover-capable.d.ts +0 -0
  1148. /package/dist-lib/{src/lib → lib}/hooks/use-mobile.d.ts +0 -0
  1149. /package/dist-lib/{src/lib → lib}/sound.d.ts +0 -0
  1150. /package/dist-lib/{src/lib → lib}/utils.d.ts +0 -0
  1151. /package/src/components/blocks/{nav/sidebar → sidebar}/marquee-label.tsx +0 -0
@@ -1,23 +1,41 @@
1
1
  "use client"
2
2
 
3
- import { AtSign, BookOpen, Download, Film, FileText, Image as ImageIcon, Link as LinkIcon, Reply, TextQuote } from "lucide-react"
4
- import type * as React from "react"
3
+ import {
4
+ AtSign,
5
+ BookOpen,
6
+ Download,
7
+ Film,
8
+ FileText,
9
+ Image as ImageIcon,
10
+ Link as LinkIcon,
11
+ Reply,
12
+ TextQuote,
13
+ } from "lucide-react"
14
+ import { useState, type ReactElement, type ReactNode } from "react"
5
15
  import { cn } from "@/lib/utils"
16
+ import { ATTACHMENT_CONTENT } from "@/lib/attachment-content"
6
17
  import { Button } from "@/components/ui/button"
7
- import { PreviewCard, PreviewCardPopup, PreviewCardTrigger } from "@/components/ui/preview-card"
18
+ import {
19
+ PreviewCard,
20
+ PreviewCardPopup,
21
+ PreviewCardTrigger,
22
+ } from "@/components/ui/preview-card"
8
23
  import {
9
24
  AvatarHandle,
10
25
  DurationPill,
11
26
  Favicon,
12
- IconTile,
13
27
  PlayButton,
14
28
  QuoteRail,
15
29
  RemoveButton,
16
- Thumbnail,
17
30
  Waveform,
18
31
  } from "@/components/ui/chat"
32
+ import {
33
+ attachmentFileKind,
34
+ attachmentMimeType,
35
+ useAttachmentFile,
36
+ } from "./attachment-file"
19
37
 
20
- export type AttachmentKind =
38
+ export type TAttachmentKind =
21
39
  | "document"
22
40
  | "image"
23
41
  | "media"
@@ -25,36 +43,61 @@ export type AttachmentKind =
25
43
  | "chat-reply"
26
44
  | "username-handle"
27
45
  | "url-link"
46
+ export type TAttachmentVariant = "default" | "preview"
28
47
 
29
- export type AttachmentVariant = "default" | "preview"
30
-
31
- interface AttachmentBase {
48
+ interface IAttachmentBase {
32
49
  id?: string
33
50
  className?: string
34
51
  style?: React.CSSProperties
35
- /** `default` is the 240×52 composer chip; `preview` the in-bubble rendering. */
36
- variant?: AttachmentVariant
37
- /** Primary line of the chip (file name, handle, URL, source…). */
38
- title: React.ReactNode
39
- /** Secondary line of the chip ("PDF · 2.4 MB", "Link · fetching preview"…). */
40
- meta?: React.ReactNode
41
- /** Fires from the chip's ✕. Omit (or pass `removable={false}`) to hide it. */
52
+ /** `default` is a compact chip with a hover preview; `preview` displays the content directly. */
53
+ variant?: TAttachmentVariant
54
+ title: ReactNode
55
+ meta?: ReactNode
42
56
  onRemove?: () => void
43
57
  removable?: boolean
58
+ /** A local file, retained through sending. Its type and preview are resolved automatically. */
59
+ file?: File
60
+ /** Content URL for an uploaded file, image, media or document. */
61
+ src?: string
62
+ /** A supplied thumbnail takes precedence over a generated image/video frame. */
63
+ thumbnail?: string
64
+ /** Custom rich hover content, for formats the browser cannot display itself. */
65
+ preview?: ReactNode
66
+ /** A document excerpt; text files generate one automatically (first 8 KB). */
67
+ previewText?: string
68
+ mimeType?: string
44
69
  }
45
70
 
46
- export type AttachmentProps = AttachmentBase &
71
+ export type TAttachmentProps = IAttachmentBase &
47
72
  (
48
- | { kind: "document"; onAction?: () => void; actionIcon?: React.ReactNode }
49
- | { kind: "image"; src?: string; alt?: string }
50
- | { kind: "media"; src?: string; poster?: string; duration?: React.ReactNode; audio?: boolean; onPlay?: () => void; waveform?: number[] }
51
- | { kind: "text-selection"; quote?: React.ReactNode }
52
- | { kind: "chat-reply"; author?: React.ReactNode; time?: React.ReactNode; body?: React.ReactNode }
53
- | { kind: "username-handle"; src?: string; initials?: string }
54
- | { kind: "url-link"; src?: string; domain?: React.ReactNode; description?: React.ReactNode; favicon?: string; href?: string }
73
+ | { kind: "document"; onAction?: () => void; actionIcon?: ReactNode }
74
+ | { kind: "image"; alt?: string }
75
+ | {
76
+ kind: "media"
77
+ poster?: string
78
+ duration?: ReactNode
79
+ audio?: boolean
80
+ onPlay?: () => void
81
+ waveform?: number[]
82
+ }
83
+ | { kind: "text-selection"; quote?: ReactNode }
84
+ | {
85
+ kind: "chat-reply"
86
+ author?: ReactNode
87
+ time?: ReactNode
88
+ body?: ReactNode
89
+ }
90
+ | { kind: "username-handle"; initials?: string }
91
+ | {
92
+ kind: "url-link"
93
+ domain?: ReactNode
94
+ description?: ReactNode
95
+ favicon?: string
96
+ href?: string
97
+ }
55
98
  )
56
99
 
57
- const KIND_ICON: Record<AttachmentKind, React.ComponentType<{ className?: string }>> = {
100
+ const KIND_ICON = {
58
101
  document: FileText,
59
102
  image: ImageIcon,
60
103
  media: Film,
@@ -63,166 +106,393 @@ const KIND_ICON: Record<AttachmentKind, React.ComponentType<{ className?: string
63
106
  "username-handle": AtSign,
64
107
  "url-link": LinkIcon,
65
108
  }
66
-
67
- const chipClasses = "flex h-[52px] w-60 items-center gap-2.5 rounded-[10px] border border-border-default bg-surface-card py-1.5 pl-1.5 pr-2.5 text-left"
68
- const titleClasses = "truncate text-[13px] font-medium leading-[15px] text-text-primary"
109
+ const chipClasses =
110
+ "flex min-h-[52px] w-60 max-w-full items-center gap-2.5 rounded-lg border border-border-default bg-surface-card py-1.5 pl-1.5 pr-2.5 text-left"
111
+ const titleClasses =
112
+ "truncate text-[13px] font-medium leading-[15px] text-text-primary"
69
113
  const metaClasses = "truncate text-[11px] leading-3 text-text-secondary"
114
+ const panelClasses =
115
+ "w-[260px] max-w-full overflow-hidden rounded-lg border border-border-default bg-surface-card"
116
+
117
+ /** Compact attachments open their content on hover/focus; expanded content has no nested preview. */
118
+ export function Attachment(props: TAttachmentProps): ReactElement {
119
+ const filePreview = useAttachmentFile(props.file)
120
+ const resolved = {
121
+ ...props,
122
+ ...(props.file ? attachmentFileKind(props.file) : {}),
123
+ src: props.src ?? filePreview?.url,
124
+ previewText: props.previewText ?? filePreview?.text,
125
+ mimeType:
126
+ props.mimeType ??
127
+ (props.file ? attachmentMimeType(props.file) : undefined),
128
+ } as TAttachmentProps
129
+ if (props.variant === "preview") return <AttachmentPreview {...resolved} />
70
130
 
71
- /**
72
- * One attachment in every shape the chat needs — a composer chip before
73
- * sending (`variant="default"`) or the rendering inside a bubble
74
- * (`variant="preview"`).
75
- *
76
- * @sketch "Component / Attachment / {Image, Media, Document, Text Selection, Chat Reply, Username Handle, URL Link} / {Default, Preview}", "Component / Attachment / Media / Preview Audio"
77
- */
78
- export function Attachment(props: AttachmentProps): React.ReactElement {
79
- if (props.variant === "preview") return <AttachmentPreview {...props} />
80
- if (!PREVIEWABLE.has(props.kind)) return <AttachmentChip {...props} />
81
- // A chip whose kind has a richer rendering shows it on hover / focus.
82
131
  return (
83
132
  <PreviewCard>
84
- <PreviewCardTrigger delay={300} render={<AttachmentChip {...props} />} />
85
- <PreviewCardPopup className="w-fit p-1.5">
86
- <AttachmentPreview {...props} variant="preview" removable={false} />
133
+ <PreviewCardTrigger
134
+ delay={300}
135
+ tabIndex={0}
136
+ render={
137
+ <div className="w-fit max-w-full rounded-lg outline-none focus-visible:ring-2 focus-visible:ring-ring" />
138
+ }
139
+ >
140
+ <AttachmentChip {...resolved} />
141
+ </PreviewCardTrigger>
142
+ <PreviewCardPopup
143
+ className="p-1.5 w-fit max-w-[calc(100vw-2rem)] rounded-lg"
144
+ data-slot="attachment-hover-preview"
145
+ >
146
+ {props.preview ?? (
147
+ <AttachmentHover {...resolved} id={undefined} className={undefined} />
148
+ )}
87
149
  </PreviewCardPopup>
88
150
  </PreviewCard>
89
151
  )
90
152
  }
91
153
 
92
- /** Kinds whose preview rendering says more than the chip: images, media, quotes, replies and link cards. */
93
- const PREVIEWABLE: ReadonlySet<AttachmentKind> = new Set(["image", "media", "text-selection", "chat-reply", "url-link"])
154
+ Object.assign(Attachment, { [ATTACHMENT_CONTENT]: true })
94
155
 
95
- function AttachmentChip(props: AttachmentProps & Record<string, unknown>): React.ReactElement {
96
- const { kind, variant: _variant, title, meta, onRemove, removable = true, className, id, style, ...rest } = props
97
- const Icon = KIND_ICON[kind]
98
- const leading =
99
- kind === "image" ? (
100
- <Thumbnail src={props.src} alt={props.alt} />
101
- ) : (
102
- <IconTile>
103
- <Icon />
104
- </IconTile>
105
- )
156
+ /** Real file content when available; a kind icon otherwise. No fabricated thumbnail. */
157
+ function AttachmentVisual({
158
+ attachment,
159
+ small = false,
160
+ className,
161
+ }: {
162
+ attachment: TAttachmentProps
163
+ small?: boolean
164
+ className?: string
165
+ }): ReactElement {
166
+ const [failedSource, setFailedSource] = useState<string>()
167
+ const Icon = KIND_ICON[attachment.kind]
168
+ const label =
169
+ typeof attachment.title === "string" ? attachment.title : "Attachment"
170
+ const image =
171
+ attachment.thumbnail ??
172
+ (attachment.kind === "image" || attachment.kind === "url-link"
173
+ ? attachment.src
174
+ : attachment.kind === "media"
175
+ ? attachment.poster
176
+ : undefined)
177
+ const video =
178
+ attachment.kind === "media" && !attachment.audio
179
+ ? attachment.src
180
+ : undefined
181
+ const pdf =
182
+ attachment.kind === "document" &&
183
+ (attachment.mimeType === "application/pdf" ||
184
+ /\.pdf(?:[?#]|$)/i.test(attachment.src ?? ""))
106
185
  return (
107
- <div {...chipRest(rest)} data-slot="attachment" data-kind={kind} data-variant="default" className={cn(chipClasses, className)} id={id} style={style}>
108
- {leading}
109
- <span className="flex min-w-0 flex-1 flex-col gap-0.5">
110
- <span className={titleClasses}>{title}</span>
111
- {meta ? <span className={metaClasses}>{meta}</span> : null}
112
- </span>
113
- {removable && onRemove ? <RemoveButton onClick={onRemove} /> : null}
186
+ <div
187
+ data-slot="attachment-thumbnail"
188
+ className={cn(
189
+ "relative flex shrink-0 items-center justify-center overflow-hidden rounded-lg bg-surface-subtle text-text-muted",
190
+ small ? "size-10" : "w-60 aspect-[3/2] max-w-full",
191
+ className
192
+ )}
193
+ >
194
+ {image && failedSource !== image ? (
195
+ <img
196
+ src={image}
197
+ alt={attachment.kind === "image" ? (attachment.alt ?? label) : label}
198
+ onError={() => setFailedSource(image)}
199
+ className="size-full object-cover"
200
+ />
201
+ ) : video && failedSource !== video ? (
202
+ <video
203
+ src={video.includes("#") ? video : `${video}#t=0.1`}
204
+ aria-label={label}
205
+ preload="metadata"
206
+ muted
207
+ playsInline
208
+ onError={() => setFailedSource(video)}
209
+ className="size-full object-cover"
210
+ />
211
+ ) : !small && pdf && attachment.src ? (
212
+ <object
213
+ data={`${attachment.src.split("#")[0]}#page=1&view=FitH&toolbar=0&navpanes=0`}
214
+ type="application/pdf"
215
+ aria-label={`Preview of ${label}`}
216
+ className="bg-white size-full"
217
+ >
218
+ <span className="p-4 text-sm text-neutral-600">
219
+ PDF preview unavailable in this browser.
220
+ </span>
221
+ </object>
222
+ ) : attachment.previewText ? (
223
+ <pre
224
+ aria-label={`${label} excerpt`}
225
+ className={cn(
226
+ "font-mono size-full overflow-hidden bg-background text-left break-words whitespace-pre-wrap text-foreground",
227
+ small ? "p-1 text-[3px] leading-[4px]" : "p-3 leading-4 text-[11px]"
228
+ )}
229
+ >
230
+ {attachment.previewText}
231
+ </pre>
232
+ ) : (
233
+ <Icon aria-hidden className={small ? "size-4" : "size-9 opacity-60"} />
234
+ )}
114
235
  </div>
115
236
  )
116
237
  }
117
238
 
118
- /** Only what the preview-card trigger merges in (ref, hover/focus handlers, aria); the kind-specific props stay off the DOM. */
119
- const KIND_PROPS = new Set(["src", "alt", "poster", "duration", "audio", "onPlay", "waveform", "quote", "author", "time", "body", "initials", "domain", "description", "favicon", "href", "onAction", "actionIcon"])
120
- function chipRest(rest: Record<string, unknown>): Record<string, unknown> {
121
- return Object.fromEntries(Object.entries(rest).filter(([k]) => !KIND_PROPS.has(k)))
239
+ function AttachmentChip(props: TAttachmentProps): ReactElement {
240
+ return (
241
+ <div
242
+ data-slot="attachment"
243
+ data-kind={props.kind}
244
+ data-variant="default"
245
+ className={cn(chipClasses, props.className)}
246
+ id={props.id}
247
+ style={props.style}
248
+ >
249
+ <AttachmentVisual attachment={props} small />
250
+ <span className="min-w-0 gap-0.5 flex flex-1 flex-col">
251
+ <span className={titleClasses}>{props.title}</span>
252
+ {props.meta ? <span className={metaClasses}>{props.meta}</span> : null}
253
+ </span>
254
+ {props.removable !== false && props.onRemove ? (
255
+ <RemoveButton onClick={props.onRemove} />
256
+ ) : null}
257
+ </div>
258
+ )
122
259
  }
123
260
 
124
- function AttachmentPreview(props: AttachmentProps): React.ReactElement {
125
- const { kind, variant: _variant, title, meta, onRemove: _onRemove, removable: _removable, className, id, style } = props
126
- const shared = { "data-slot": "attachment", "data-kind": kind, "data-variant": "preview", id, style } as const
127
-
261
+ function AttachmentPreview(props: TAttachmentProps): ReactElement {
262
+ const { kind, title, meta, className, id, style } = props
263
+ const shared = {
264
+ "data-slot": "attachment",
265
+ "data-kind": kind,
266
+ "data-variant": "preview",
267
+ id,
268
+ style,
269
+ } as const
128
270
  switch (props.kind) {
129
271
  case "image":
130
272
  return (
131
- <Thumbnail size="lg" src={props.src} alt={props.alt} className={className} {...shared} />
273
+ <div {...shared} className={cn("max-w-full rounded-lg", className)}>
274
+ <AttachmentVisual attachment={props} />
275
+ </div>
132
276
  )
133
277
  case "media": {
134
- const { src, poster, duration, audio, onPlay, waveform } = props
135
- if (audio) {
278
+ if (props.audio) {
136
279
  return (
137
- <div {...shared} className={cn("flex h-14 w-60 items-center gap-3 rounded-[10px] border border-border-default bg-surface-card py-2.5 pl-2.5 pr-3.5", className)}>
138
- <PlayButton onClick={onPlay} className="bg-text-primary text-text-inverse hover:bg-text-primary/85" />
139
- <span className="flex min-w-0 flex-1 flex-col gap-1">
140
- <Waveform bars={waveform} />
141
- <span className={metaClasses}>{meta ?? title}</span>
142
- </span>
280
+ <div
281
+ {...shared}
282
+ className={cn(panelClasses, "gap-2 p-2.5 flex flex-col", className)}
283
+ >
284
+ {props.src ? (
285
+ <audio
286
+ controls
287
+ preload="metadata"
288
+ src={props.src}
289
+ aria-label={
290
+ typeof title === "string" ? title : "Audio attachment"
291
+ }
292
+ className="h-9 min-w-0 w-full"
293
+ />
294
+ ) : (
295
+ <div className="gap-3 flex items-center">
296
+ <PlayButton onClick={props.onPlay} />
297
+ <Waveform bars={props.waveform} />
298
+ </div>
299
+ )}
300
+ {meta ? <span className={metaClasses}>{meta}</span> : null}
143
301
  </div>
144
302
  )
145
303
  }
146
304
  return (
147
- <Thumbnail size="lg" src={poster ?? src} className={className} {...shared}>
148
- <PlayButton onClick={onPlay} className="absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2" />
149
- {duration ? <DurationPill className="absolute bottom-2 right-2">{duration}</DurationPill> : null}
150
- </Thumbnail>
305
+ <div
306
+ {...shared}
307
+ className={cn(
308
+ "w-60 relative max-w-full overflow-hidden rounded-lg",
309
+ className
310
+ )}
311
+ >
312
+ {props.src ? (
313
+ <video
314
+ controls
315
+ preload="metadata"
316
+ playsInline
317
+ src={props.src}
318
+ poster={props.poster ?? props.thumbnail}
319
+ aria-label={
320
+ typeof title === "string" ? title : "Video attachment"
321
+ }
322
+ className="aspect-[3/2] w-full rounded-lg bg-surface-subtle object-cover"
323
+ />
324
+ ) : (
325
+ <>
326
+ <AttachmentVisual attachment={props} />
327
+ <PlayButton
328
+ onClick={props.onPlay}
329
+ className="absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2"
330
+ />
331
+ </>
332
+ )}
333
+ {props.duration ? (
334
+ <DurationPill className="right-2 top-2 pointer-events-none absolute">
335
+ {props.duration}
336
+ </DurationPill>
337
+ ) : null}
338
+ </div>
151
339
  )
152
340
  }
153
- case "document": {
154
- const { onAction, actionIcon } = props
341
+ case "document":
155
342
  return (
156
- <div {...shared} className={cn("flex h-14 w-[260px] items-center gap-2.5 rounded-[10px] border border-border-default bg-surface-card py-2 pl-2 pr-3", className)}>
157
- <IconTile><FileText /></IconTile>
158
- <span className="flex min-w-0 flex-1 flex-col gap-0.5">
343
+ <div {...shared} className={cn(chipClasses, "w-[260px]", className)}>
344
+ <AttachmentVisual attachment={props} small />
345
+ <span className="min-w-0 gap-0.5 flex flex-1 flex-col">
159
346
  <span className={titleClasses}>{title}</span>
160
347
  {meta ? <span className={metaClasses}>{meta}</span> : null}
161
348
  </span>
162
- {onAction ? (
163
- <Button aria-label="Download" variant="ghost" size="icon-xs" onClick={onAction} className="size-6 text-icon sm:size-6">
164
- {actionIcon ?? <Download />}
349
+ {props.onAction ? (
350
+ <Button
351
+ aria-label="Download"
352
+ variant="ghost"
353
+ size="icon-xs"
354
+ onClick={props.onAction}
355
+ >
356
+ {props.actionIcon ?? <Download />}
165
357
  </Button>
166
358
  ) : null}
167
359
  </div>
168
360
  )
169
- }
170
361
  case "text-selection":
171
362
  return (
172
- <div {...shared} className={cn("flex w-[260px] gap-2.5 rounded-[10px] bg-surface-subtle p-2.5", className)}>
363
+ <div
364
+ {...shared}
365
+ className={cn(
366
+ "gap-2.5 p-2.5 flex w-[260px] max-w-full rounded-lg bg-surface-subtle",
367
+ className
368
+ )}
369
+ >
173
370
  <QuoteRail />
174
- <span className="flex min-w-0 flex-1 flex-col gap-1">
175
- <span className="flex items-center gap-1.5 text-[11px] font-semibold leading-4 text-accent-text [&_svg]:size-4 [&_svg]:text-accent-default">
176
- <BookOpen />
371
+ <span className="min-w-0 gap-1 flex flex-1 flex-col">
372
+ <span className="gap-1.5 font-semibold leading-4 flex items-center text-[11px] text-accent-text">
373
+ <BookOpen className="size-4 shrink-0" />
177
374
  <span className="truncate">{title}</span>
178
375
  </span>
179
- <span className="line-clamp-4 text-[13px] leading-[15px] text-text-primary">{props.quote}</span>
376
+ <span className="line-clamp-4 text-[13px] leading-[15px] text-text-primary">
377
+ {props.quote ?? meta}
378
+ </span>
180
379
  </span>
181
380
  </div>
182
381
  )
183
382
  case "chat-reply":
184
383
  return (
185
- <div {...shared} className={cn("flex w-[260px] gap-2 rounded-[10px] bg-surface-subtle py-2 pl-2 pr-2.5", className)}>
384
+ <div
385
+ {...shared}
386
+ className={cn(
387
+ "gap-2 p-2.5 flex w-[260px] max-w-full rounded-lg bg-surface-subtle",
388
+ className
389
+ )}
390
+ >
186
391
  <QuoteRail />
187
- <span className="flex min-w-0 flex-1 flex-col gap-0.5">
188
- <span className="flex items-center gap-1.5 text-[12px] leading-4 [&_svg]:size-4 [&_svg]:text-accent-default">
189
- <Reply />
190
- <span className="truncate font-semibold text-accent-text">{props.author ?? title}</span>
191
- {props.time ? <span className="text-[11px] text-text-muted">{props.time}</span> : null}
392
+ <span className="min-w-0 gap-0.5 flex flex-1 flex-col">
393
+ <span className="gap-1.5 leading-4 flex items-center text-[12px] text-accent-text">
394
+ <Reply className="size-4 shrink-0" />
395
+ <span className="font-semibold truncate">
396
+ {props.author ?? title}
397
+ </span>
398
+ {props.time ? (
399
+ <span className="text-[11px] text-text-muted">
400
+ {props.time}
401
+ </span>
402
+ ) : null}
403
+ </span>
404
+ <span className="line-clamp-3 text-[13px] leading-[15px] text-text-primary">
405
+ {props.body ?? meta}
192
406
  </span>
193
- <span className="line-clamp-3 text-[13px] leading-[15px] text-text-primary">{props.body ?? meta}</span>
194
407
  </span>
195
408
  </div>
196
409
  )
197
410
  case "username-handle":
198
411
  return (
199
- <span {...shared} className={cn("inline-flex h-6 items-center gap-1.5 rounded-full bg-accent-subtle py-0.5 pl-0.5 pr-2 text-[13px] font-semibold leading-none text-accent-text", className)}>
412
+ <span
413
+ {...shared}
414
+ className={cn(
415
+ "h-6 gap-1.5 py-0.5 pl-0.5 pr-2 font-semibold inline-flex max-w-full items-center rounded-lg bg-accent-subtle text-[13px] leading-none text-accent-text",
416
+ className
417
+ )}
418
+ >
200
419
  <AvatarHandle src={props.src} initials={props.initials} />
201
420
  {title}
202
421
  </span>
203
422
  )
204
423
  case "url-link": {
205
- const { src, domain, description, favicon, href } = props
206
- const Tag = href ? "a" : "div"
424
+ const Tag = props.href ? "a" : "div"
207
425
  return (
208
426
  <Tag
209
427
  {...shared}
210
- href={href}
211
- target={href ? "_blank" : undefined}
212
- rel={href ? "noreferrer" : undefined}
213
- className={cn("block w-60 overflow-hidden rounded-[10px] border border-border-default bg-surface-card", className)}
428
+ href={props.href}
429
+ target={props.href ? "_blank" : undefined}
430
+ rel={props.href ? "noreferrer" : undefined}
431
+ className={cn(panelClasses, "w-60 block", className)}
214
432
  >
215
- <Thumbnail size="lg" src={src} className="h-[120px] w-full rounded-none" />
216
- <span className="flex flex-col gap-1 px-3 pb-3 pt-2.5">
217
- <span className="flex items-center gap-1.5 font-mono text-[10.5px] leading-3 text-text-secondary">
218
- <Favicon src={favicon} />
219
- <span className="truncate">{domain}</span>
433
+ <AttachmentVisual
434
+ attachment={props}
435
+ className="h-[120px] w-full rounded-none"
436
+ />
437
+ <span className="gap-1 px-3 pb-3 pt-2.5 flex flex-col">
438
+ <span className="gap-1.5 font-mono leading-3 flex items-center text-[10.5px] text-text-secondary">
439
+ <Favicon src={props.favicon} />
440
+ <span className="truncate">{props.domain}</span>
220
441
  </span>
221
442
  <span className={titleClasses}>{title}</span>
222
- {description ? <span className="line-clamp-2 text-[11px] leading-[14px] text-text-secondary">{description}</span> : null}
443
+ {props.description ? (
444
+ <span className="line-clamp-2 text-[11px] leading-[14px] text-text-secondary">
445
+ {props.description}
446
+ </span>
447
+ ) : null}
223
448
  </span>
224
449
  </Tag>
225
450
  )
226
451
  }
227
452
  }
228
453
  }
454
+
455
+ function AttachmentHover(props: TAttachmentProps): ReactElement {
456
+ if (props.kind === "document") {
457
+ return (
458
+ <div className={cn(panelClasses, "border-0")}>
459
+ <AttachmentVisual
460
+ attachment={props}
461
+ className="w-full rounded-b-none"
462
+ />
463
+ <div className="gap-1 p-3 flex flex-col">
464
+ <span className={titleClasses}>{props.title}</span>
465
+ {props.meta ? (
466
+ <span className={metaClasses}>{props.meta}</span>
467
+ ) : null}
468
+ </div>
469
+ </div>
470
+ )
471
+ }
472
+ if (props.kind === "username-handle") {
473
+ return (
474
+ <div className="w-60 gap-3 p-3 flex max-w-full items-center rounded-lg bg-surface-card">
475
+ <AvatarHandle src={props.src} initials={props.initials} size={20} />
476
+ <span className="min-w-0 gap-1 flex flex-col">
477
+ <span className={titleClasses}>{props.title}</span>
478
+ {props.meta ? (
479
+ <span className={metaClasses}>{props.meta}</span>
480
+ ) : null}
481
+ </span>
482
+ </div>
483
+ )
484
+ }
485
+ return (
486
+ <div className="gap-2 flex max-w-full flex-col">
487
+ <AttachmentPreview {...props} variant="preview" removable={false} />
488
+ {props.kind === "image" || props.kind === "media" ? (
489
+ <div className="max-w-60 gap-1 px-1 pb-1 flex flex-col">
490
+ <span className={titleClasses}>{props.title}</span>
491
+ {props.meta ? (
492
+ <span className={metaClasses}>{props.meta}</span>
493
+ ) : null}
494
+ </div>
495
+ ) : null}
496
+ </div>
497
+ )
498
+ }
@@ -0,0 +1,55 @@
1
+ import { atom } from "jotai"
2
+ import type { IChartState, TChartInstanceId } from "./type"
3
+
4
+ function createChartAtoms(id: TChartInstanceId) {
5
+ const selected = atom<string | null>(null)
6
+ selected.debugLabel = `chart/${id}/selectedKey`
7
+ const config = atom<{
8
+ controlled: boolean
9
+ initial: string | null
10
+ keys: readonly string[]
11
+ onChange?: (key: string | null) => void
12
+ }>({ controlled: false, initial: null, keys: [] })
13
+ const select = atom(null, (get, set, key: string | null) => {
14
+ const settings = get(config)
15
+ if (key !== null && !settings.keys.includes(key)) return
16
+ if (get(selected) === key) return
17
+ if (!settings.controlled) set(selected, key)
18
+ settings.onChange?.(key)
19
+ })
20
+ const toggle = atom(null, (get, set, key: string) =>
21
+ set(select, get(selected) === key ? null : key)
22
+ )
23
+ const reset = atom(null, (get, set) => {
24
+ const { initial, keys } = get(config)
25
+ set(select, initial !== null && keys.includes(initial) ? initial : null)
26
+ })
27
+ const state = atom<IChartState>((get) => ({ selectedKey: get(selected) }))
28
+ return { selected, config, select, toggle, reset, state }
29
+ }
30
+ const instances = new Map<
31
+ TChartInstanceId,
32
+ ReturnType<typeof createChartAtoms>
33
+ >()
34
+ function chartAtoms(id: TChartInstanceId) {
35
+ let atoms = instances.get(id)
36
+ if (!atoms) {
37
+ atoms = createChartAtoms(id)
38
+ instances.set(id, atoms)
39
+ }
40
+ return atoms
41
+ }
42
+ export const chartSelectedKeyAtom = (id: TChartInstanceId) =>
43
+ chartAtoms(id).selected
44
+ export const chartStateAtom = (id: TChartInstanceId) => chartAtoms(id).state
45
+ export const selectChartKeyAtom = (id: TChartInstanceId) =>
46
+ chartAtoms(id).select
47
+ export const toggleChartKeyAtom = (id: TChartInstanceId) =>
48
+ chartAtoms(id).toggle
49
+ export const resetChartAtom = (id: TChartInstanceId) => chartAtoms(id).reset
50
+ /** @internal Mounted root projects configuration and controlled props. */
51
+ export const chartConfigAtom = (id: TChartInstanceId) => chartAtoms(id).config
52
+ /** Call only after all consumers of a named instance have unmounted. */
53
+ export function removeChartInstance(id: TChartInstanceId) {
54
+ instances.delete(id)
55
+ }