@vadimcomanescu/nadicode-design-system 2.0.6 → 2.0.8

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 (339) hide show
  1. package/.agents/skills/seed/SKILL.md +17 -8
  2. package/.agents/skills/seed/contract.md +5 -4
  3. package/.agents/skills/seed/intent-map.md +3 -3
  4. package/.agents/skills/seed/recipes/agents-chat.md +44 -20
  5. package/.agents/skills/seed/recipes/marketing-shell.md +10 -19
  6. package/.agents/skills/seed/recipes/navigation-shell.md +5 -5
  7. package/.agents/skills/seed/recipes/service-detail.md +1 -1
  8. package/.agents/skills/seed/references/blocks.md +30 -26
  9. package/.agents/skills/seed/references/brand-override.md +3 -1
  10. package/.agents/skills/seed/references/components.md +22 -2
  11. package/.agents/skills/seed/references/dashboard-patterns.md +12 -12
  12. package/.agents/skills/seed/references/nextjs.md +20 -80
  13. package/.agents/skills/seed/references/tokens.md +57 -248
  14. package/README.md +43 -215
  15. package/contracts/block-props-schemas.json +2186 -0
  16. package/contracts/component-props-schemas.json +8322 -0
  17. package/contracts/consumer-contract.json +178 -0
  18. package/contracts/consumer-intent-map.json +707 -0
  19. package/contracts/message-catalog-contract.json +820 -0
  20. package/contracts/page-kit-props-schemas.json +1894 -0
  21. package/contracts/public-surface-registry.json +6162 -0
  22. package/contracts/public-surface-registry.schema.json +227 -0
  23. package/contracts/release-governance-baseline.json +850 -0
  24. package/contracts/spec-manifest.json +46 -0
  25. package/css/tokens.css +300 -122
  26. package/dist/catalog.json +2166 -162
  27. package/dist/chunk-2BADJLMV.js +117 -0
  28. package/dist/chunk-35EX5FP5.js +106 -0
  29. package/dist/chunk-4IGBBIYW.js +47 -0
  30. package/dist/chunk-4WPZ6T7V.js +186 -0
  31. package/dist/chunk-5PZ4VR2D.js +142 -0
  32. package/dist/chunk-5UESKK6S.js +76 -0
  33. package/dist/chunk-7A2RXKGH.js +205 -0
  34. package/dist/{chunk-DF47R6LN.js → chunk-AWIG4QN6.js} +9 -9
  35. package/dist/chunk-AYWL4IYM.js +67 -0
  36. package/dist/chunk-C7WHMSF3.js +114 -0
  37. package/dist/{chunk-SV3KZ6CB.js → chunk-DSMGCFMJ.js} +7 -2
  38. package/dist/{chunk-4K3PATUT.js → chunk-EEL4RAPC.js} +13 -1
  39. package/dist/{chunk-ILIHQ2KZ.js → chunk-EK43W2Y6.js} +16 -10
  40. package/dist/chunk-FV2G6SAF.js +134 -0
  41. package/dist/chunk-FX23F33E.js +57 -0
  42. package/dist/chunk-GJPTPLCQ.js +52 -0
  43. package/dist/chunk-HJ3A2YNO.js +163 -0
  44. package/dist/chunk-HJZRSPWB.js +38 -0
  45. package/dist/chunk-HWHJ6IRQ.js +78 -0
  46. package/dist/chunk-HZERHGBT.js +77 -0
  47. package/dist/{chunk-AUSYEAIJ.js → chunk-I66XWYSS.js} +32 -8
  48. package/dist/chunk-IXQGKJU4.js +183 -0
  49. package/dist/chunk-JDJY4ABS.js +60 -0
  50. package/dist/chunk-K7NQ6ZAW.js +84 -0
  51. package/dist/chunk-KWILREVQ.js +147 -0
  52. package/dist/chunk-LCKLZ4XK.js +60 -0
  53. package/dist/{chunk-WI37ZYIF.js → chunk-M4XKO45H.js} +13 -1
  54. package/dist/chunk-NEHCPO53.js +44 -0
  55. package/dist/chunk-OJ7OO3QB.js +269 -0
  56. package/dist/{chunk-ZHTQF2KI.js → chunk-OSNTB6RY.js} +29 -22
  57. package/dist/{chunk-GMMPLZLC.js → chunk-PDSQC6VE.js} +1 -1
  58. package/dist/chunk-QIHA7S3A.js +36 -0
  59. package/dist/chunk-QQOWC53X.js +98 -0
  60. package/dist/chunk-RKQPU75I.js +126 -0
  61. package/dist/chunk-U4GYSYGN.js +120 -0
  62. package/dist/chunk-UGV45DH3.js +18 -0
  63. package/dist/chunk-VBZQ4DBE.js +52 -0
  64. package/dist/{chunk-LQLFA2EL.js → chunk-VDONTZZX.js} +2 -2
  65. package/dist/chunk-VEO56RH4.js +105 -0
  66. package/dist/chunk-VJ5VD4UT.js +91 -0
  67. package/dist/{chunk-RWNJ54CI.js → chunk-VN475YZS.js} +1 -1
  68. package/dist/chunk-VNNAL4A6.js +110 -0
  69. package/dist/chunk-VZCB4APK.js +94 -0
  70. package/dist/chunk-W7FXDRQJ.js +94 -0
  71. package/dist/{chunk-5I3FWRC5.js → chunk-WOYBVPXK.js} +10 -10
  72. package/dist/chunk-WST5NLLC.js +73 -0
  73. package/dist/chunk-X6VXWEDO.js +125 -0
  74. package/dist/chunk-XTASI4IY.js +60 -0
  75. package/dist/chunk-Z233ZQZE.js +33 -0
  76. package/dist/chunk-ZKLB5N3Q.js +110 -0
  77. package/dist/chunk-ZM2NODUK.js +39 -0
  78. package/dist/components/blocks/AccountLockedBlock.js +7 -57
  79. package/dist/components/blocks/ActivityFeedBlock.js +6 -39
  80. package/dist/components/blocks/AgentConversationBlock.d.ts +6 -1
  81. package/dist/components/blocks/AgentConversationBlock.js +45 -71
  82. package/dist/components/blocks/AgentRunOverviewBlock.js +1 -1
  83. package/dist/components/blocks/AgentWorkbenchBlock.d.ts +5 -1
  84. package/dist/components/blocks/AgentWorkbenchBlock.js +47 -46
  85. package/dist/components/blocks/AudioVisualizerBlock.d.ts +1 -1
  86. package/dist/components/blocks/AudioVisualizerBlock.js +2 -2
  87. package/dist/components/blocks/AuthLayout.js +2 -2
  88. package/dist/components/blocks/AuthSuccessBlock.js +5 -60
  89. package/dist/components/blocks/BannerBlock.js +38 -38
  90. package/dist/components/blocks/BarChartBlock.d.ts +1 -1
  91. package/dist/components/blocks/BarChartBlock.js +2 -2
  92. package/dist/components/blocks/CallToActionBlock.d.ts +1 -1
  93. package/dist/components/blocks/CallToActionBlock.js +7 -53
  94. package/dist/components/blocks/ChangelogBlock.js +45 -142
  95. package/dist/components/blocks/ChartBlock.js +38 -38
  96. package/dist/components/blocks/ChartCollectionBlock.js +3 -3
  97. package/dist/components/blocks/ChatLayout.d.ts +4 -1
  98. package/dist/components/blocks/ChatLayout.js +39 -39
  99. package/dist/components/blocks/CodeBlock.js +7 -60
  100. package/dist/components/blocks/ComparisonBlock.js +9 -94
  101. package/dist/components/blocks/ContactBlock.js +11 -120
  102. package/dist/components/blocks/CreateBlock.js +39 -39
  103. package/dist/components/blocks/DataGridBlock.js +40 -40
  104. package/dist/components/blocks/DirectoryBlock.js +43 -43
  105. package/dist/components/blocks/FAQBlock.js +44 -82
  106. package/dist/components/blocks/FeatureBlock.d.ts +10 -14
  107. package/dist/components/blocks/FeatureBlock.js +54 -196
  108. package/dist/components/blocks/FeatureGridBlock.d.ts +1 -1
  109. package/dist/components/blocks/FeatureGridBlock.js +2 -2
  110. package/dist/components/blocks/FooterBlock.d.ts +2 -2
  111. package/dist/components/blocks/FooterBlock.js +11 -67
  112. package/dist/components/blocks/GalleryBlock.js +38 -38
  113. package/dist/components/blocks/HeaderBlock.d.ts +2 -2
  114. package/dist/components/blocks/HeaderBlock.js +39 -39
  115. package/dist/components/blocks/HeatmapChartBlock.d.ts +1 -1
  116. package/dist/components/blocks/HeatmapChartBlock.js +1 -1
  117. package/dist/components/blocks/HeroBlock.d.ts +6 -3
  118. package/dist/components/blocks/HeroBlock.js +53 -236
  119. package/dist/components/blocks/HeroSectionBlock.d.ts +1 -1
  120. package/dist/components/blocks/HeroSectionBlock.js +59 -63
  121. package/dist/components/blocks/IntegrationsBlock.d.ts +1 -1
  122. package/dist/components/blocks/IntegrationsBlock.js +42 -42
  123. package/dist/components/blocks/InteractiveAreaChartBlock.d.ts +1 -1
  124. package/dist/components/blocks/InteractiveAreaChartBlock.js +40 -40
  125. package/dist/components/blocks/KanbanDemoBlock.js +3 -3
  126. package/dist/components/blocks/LoginBlock.js +2 -2
  127. package/dist/components/blocks/LogoCloud.js +2 -13
  128. package/dist/components/blocks/NavUser.js +42 -42
  129. package/dist/components/blocks/NewsletterBlock.js +11 -84
  130. package/dist/components/blocks/NotFoundBlock.js +41 -41
  131. package/dist/components/blocks/OnboardingBlock.js +38 -38
  132. package/dist/components/blocks/PasswordRecoveryBlock.js +14 -142
  133. package/dist/components/blocks/PricingBlock.d.ts +1 -1
  134. package/dist/components/blocks/PricingBlock.js +13 -112
  135. package/dist/components/blocks/ProcessFlowBlock.js +10 -77
  136. package/dist/components/blocks/ResetPasswordBlock.js +11 -125
  137. package/dist/components/blocks/SettingsLayout.js +42 -42
  138. package/dist/components/blocks/SignUpBlock.d.ts +1 -1
  139. package/dist/components/blocks/SignUpBlock.js +3 -3
  140. package/dist/components/blocks/SocialProofBlock.d.ts +7 -11
  141. package/dist/components/blocks/SocialProofBlock.js +10 -108
  142. package/dist/components/blocks/StatsBlock.d.ts +1 -1
  143. package/dist/components/blocks/StatsBlock.js +40 -40
  144. package/dist/components/blocks/StatsMarketingBlock.d.ts +1 -1
  145. package/dist/components/blocks/StatsMarketingBlock.js +7 -38
  146. package/dist/components/blocks/TeamBlock.d.ts +1 -1
  147. package/dist/components/blocks/TeamBlock.js +4 -52
  148. package/dist/components/blocks/TestimonialsBlock.d.ts +1 -1
  149. package/dist/components/blocks/TestimonialsBlock.js +5 -133
  150. package/dist/components/blocks/TwoFactorChallengeBlock.js +46 -131
  151. package/dist/components/blocks/TwoFactorSetupBlock.js +53 -220
  152. package/dist/components/blocks/UsageDonutBlock.d.ts +1 -1
  153. package/dist/components/blocks/UsageDonutBlock.js +2 -2
  154. package/dist/components/blocks/VoiceAgentCard.d.ts +3 -1
  155. package/dist/components/blocks/VoiceAgentCard.js +7 -76
  156. package/dist/components/blocks/WizardBlock.js +39 -39
  157. package/dist/components/blocks/user/InviteUserModal.js +38 -38
  158. package/dist/components/logos/index.js +2 -2
  159. package/dist/components/page-kits/AccountLockedPageKit.d.ts +10 -0
  160. package/dist/components/page-kits/AccountLockedPageKit.js +48 -0
  161. package/dist/components/page-kits/AgentsChatPageKit.d.ts +46 -0
  162. package/dist/components/page-kits/AgentsChatPageKit.js +290 -0
  163. package/dist/components/page-kits/AnalyticsPageKit.d.ts +49 -0
  164. package/dist/components/page-kits/AnalyticsPageKit.js +277 -0
  165. package/dist/components/page-kits/BlogContentPageKit.d.ts +64 -0
  166. package/dist/components/page-kits/BlogContentPageKit.js +296 -0
  167. package/dist/components/page-kits/CheckoutPageKit.d.ts +36 -0
  168. package/dist/components/page-kits/CheckoutPageKit.js +209 -0
  169. package/dist/components/page-kits/CompanySuitePageKit.d.ts +25 -0
  170. package/dist/components/page-kits/CompanySuitePageKit.js +240 -0
  171. package/dist/components/page-kits/CrudFormPageKit.d.ts +54 -0
  172. package/dist/components/page-kits/CrudFormPageKit.js +138 -0
  173. package/dist/components/page-kits/CrudListDetailPageKit.d.ts +70 -0
  174. package/dist/components/page-kits/CrudListDetailPageKit.js +138 -0
  175. package/dist/components/page-kits/DashboardPageKit.d.ts +39 -0
  176. package/dist/components/page-kits/DashboardPageKit.js +284 -0
  177. package/dist/components/page-kits/ErrorPageKit.d.ts +22 -0
  178. package/dist/components/page-kits/ErrorPageKit.js +55 -0
  179. package/dist/components/page-kits/KanbanBoardPageKit.d.ts +31 -0
  180. package/dist/components/page-kits/KanbanBoardPageKit.js +305 -0
  181. package/dist/components/page-kits/LandingPageKit.d.ts +29 -0
  182. package/dist/components/page-kits/LandingPageKit.js +222 -0
  183. package/dist/components/page-kits/LoginPageKit.d.ts +16 -0
  184. package/dist/components/page-kits/LoginPageKit.js +43 -0
  185. package/dist/components/page-kits/MarketingShellPageKit.d.ts +21 -0
  186. package/dist/components/page-kits/MarketingShellPageKit.js +131 -0
  187. package/dist/components/page-kits/NavigationShellPageKit.d.ts +41 -0
  188. package/dist/components/page-kits/NavigationShellPageKit.js +132 -0
  189. package/dist/components/page-kits/OnboardingPageKit.d.ts +26 -0
  190. package/dist/components/page-kits/OnboardingPageKit.js +248 -0
  191. package/dist/components/page-kits/PricingPageKit.d.ts +41 -0
  192. package/dist/components/page-kits/PricingPageKit.js +279 -0
  193. package/dist/components/page-kits/ProfileSettingsPageKit.d.ts +50 -0
  194. package/dist/components/page-kits/ProfileSettingsPageKit.js +171 -0
  195. package/dist/components/page-kits/RecoveryPageKit.d.ts +17 -0
  196. package/dist/components/page-kits/RecoveryPageKit.js +58 -0
  197. package/dist/components/page-kits/ResetPageKit.d.ts +14 -0
  198. package/dist/components/page-kits/ResetPageKit.js +52 -0
  199. package/dist/components/page-kits/ServiceSuitePageKit.d.ts +25 -0
  200. package/dist/components/page-kits/ServiceSuitePageKit.js +321 -0
  201. package/dist/components/page-kits/SettingsPageKit.d.ts +27 -0
  202. package/dist/components/page-kits/SettingsPageKit.js +11 -0
  203. package/dist/components/page-kits/SignupPageKit.d.ts +15 -0
  204. package/dist/components/page-kits/SignupPageKit.js +41 -0
  205. package/dist/components/page-kits/SuccessPageKit.d.ts +15 -0
  206. package/dist/components/page-kits/SuccessPageKit.js +146 -0
  207. package/dist/components/page-kits/TeamSettingsPageKit.d.ts +50 -0
  208. package/dist/components/page-kits/TeamSettingsPageKit.js +297 -0
  209. package/dist/components/page-kits/TwoFactorPageKit.d.ts +16 -0
  210. package/dist/components/page-kits/TwoFactorPageKit.js +156 -0
  211. package/dist/components/page-kits/VerifyEmailPageKit.d.ts +15 -0
  212. package/dist/components/page-kits/VerifyEmailPageKit.js +146 -0
  213. package/dist/components/page-kits/VoiceAgentsPageKit.d.ts +35 -0
  214. package/dist/components/page-kits/VoiceAgentsPageKit.js +250 -0
  215. package/dist/components/ui/Accordion.js +38 -38
  216. package/dist/components/ui/AgentMessageBubble.d.ts +20 -4
  217. package/dist/components/ui/AgentMessageBubble.js +39 -39
  218. package/dist/components/ui/AgentStatus.d.ts +1 -1
  219. package/dist/components/ui/AgentStatus.js +5 -10
  220. package/dist/components/ui/AgentTerminal.d.ts +4 -1
  221. package/dist/components/ui/AgentTerminal.js +3 -1
  222. package/dist/components/ui/AgentTimeline.d.ts +2 -2
  223. package/dist/components/ui/AgentTimeline.js +15 -6
  224. package/dist/components/ui/AnimatedDialog.js +38 -38
  225. package/dist/components/ui/AnimatedSheet.js +38 -38
  226. package/dist/components/ui/ApprovalCard.js +1 -1
  227. package/dist/components/ui/AudioWaveform.js +2 -76
  228. package/dist/components/ui/AvatarUpload.js +1 -1
  229. package/dist/components/ui/Breadcrumb.js +41 -143
  230. package/dist/components/ui/Calendar.js +38 -38
  231. package/dist/components/ui/Carousel.js +38 -38
  232. package/dist/components/ui/ChartCard.js +5 -38
  233. package/dist/components/ui/ChatActions.d.ts +14 -0
  234. package/dist/components/ui/ChatActions.js +52 -0
  235. package/dist/components/ui/ChatBranch.d.ts +18 -0
  236. package/dist/components/ui/ChatBranch.js +84 -0
  237. package/dist/components/ui/ChatChainOfThought.d.ts +25 -0
  238. package/dist/components/ui/ChatChainOfThought.js +99 -0
  239. package/dist/components/ui/ChatConfirmation.d.ts +37 -0
  240. package/dist/components/ui/ChatConfirmation.js +115 -0
  241. package/dist/components/ui/ChatGreeting.d.ts +18 -0
  242. package/dist/components/ui/ChatGreeting.js +80 -0
  243. package/dist/components/ui/ChatMessage.d.ts +40 -0
  244. package/dist/components/ui/ChatMessage.js +96 -0
  245. package/dist/components/ui/ChatPlan.d.ts +29 -0
  246. package/dist/components/ui/ChatPlan.js +86 -0
  247. package/dist/components/ui/ChatPromptInput.d.ts +32 -0
  248. package/dist/components/ui/ChatPromptInput.js +193 -0
  249. package/dist/components/ui/ChatPromptInputAttachments.d.ts +9 -0
  250. package/dist/components/ui/ChatPromptInputAttachments.js +145 -0
  251. package/dist/components/ui/ChatQueue.d.ts +32 -0
  252. package/dist/components/ui/ChatQueue.js +93 -0
  253. package/dist/components/ui/ChatReasoning.d.ts +20 -0
  254. package/dist/components/ui/ChatReasoning.js +91 -0
  255. package/dist/components/ui/ChatResponse.d.ts +14 -0
  256. package/dist/components/ui/ChatResponse.js +25 -0
  257. package/dist/components/ui/ChatShimmer.d.ts +23 -0
  258. package/dist/components/ui/ChatShimmer.js +6 -0
  259. package/dist/components/ui/ChatSources.d.ts +30 -0
  260. package/dist/components/ui/ChatSources.js +113 -0
  261. package/dist/components/ui/ChatSuggestion.d.ts +13 -0
  262. package/dist/components/ui/ChatSuggestion.js +41 -0
  263. package/dist/components/ui/ChatThinkingMessage.d.ts +12 -0
  264. package/dist/components/ui/ChatThinkingMessage.js +55 -0
  265. package/dist/components/ui/ChatToolCall.d.ts +41 -0
  266. package/dist/components/ui/ChatToolCall.js +192 -0
  267. package/dist/components/ui/CheckStatus.d.ts +1 -1
  268. package/dist/components/ui/Checkbox.js +38 -38
  269. package/dist/components/ui/CheckoutForm.js +38 -38
  270. package/dist/components/ui/CheckoutFormDemo.js +43 -44
  271. package/dist/components/ui/Combobox.js +38 -38
  272. package/dist/components/ui/Command.js +38 -38
  273. package/dist/components/ui/ContextMenu.js +38 -38
  274. package/dist/components/ui/Conversation.d.ts +21 -0
  275. package/dist/components/ui/Conversation.js +196 -0
  276. package/dist/components/ui/ConversationThread.d.ts +8 -2
  277. package/dist/components/ui/ConversationThread.js +34 -16
  278. package/dist/components/ui/DataFreshness.js +2 -73
  279. package/dist/components/ui/DataTable.js +40 -40
  280. package/dist/components/ui/DatePicker.js +38 -38
  281. package/dist/components/ui/DateRangePicker.js +38 -38
  282. package/dist/components/ui/Dialog.js +38 -38
  283. package/dist/components/ui/DropdownMenu.js +39 -39
  284. package/dist/components/ui/FileUpload.js +38 -38
  285. package/dist/components/ui/InputOTP.js +38 -38
  286. package/dist/components/ui/KanbanBoard.js +2 -2
  287. package/dist/components/ui/LanguageSwitcher.js +38 -38
  288. package/dist/components/ui/Menubar.js +38 -38
  289. package/dist/components/ui/MouseEffect.js +1 -1
  290. package/dist/components/ui/NativeSelect.js +2 -18
  291. package/dist/components/ui/NavigationMenu.js +38 -38
  292. package/dist/components/ui/NotificationCenter.js +38 -38
  293. package/dist/components/ui/Pagination.js +42 -153
  294. package/dist/components/ui/RadioGroup.js +38 -38
  295. package/dist/components/ui/Resizable.js +38 -38
  296. package/dist/components/ui/SearchCommand.js +38 -38
  297. package/dist/components/ui/Select.js +38 -38
  298. package/dist/components/ui/SettingsModal.js +38 -38
  299. package/dist/components/ui/ShaderBackground.js +2 -2
  300. package/dist/components/ui/Sheet.js +38 -38
  301. package/dist/components/ui/Sidebar.js +41 -41
  302. package/dist/components/ui/StyleToggle.js +1 -1
  303. package/dist/components/ui/TagInput.js +38 -38
  304. package/dist/components/ui/ThemeToggle.js +39 -39
  305. package/dist/components/ui/ThinkingIndicator.d.ts +3 -1
  306. package/dist/components/ui/ThinkingIndicator.js +2 -1
  307. package/dist/components/ui/Toast.js +38 -38
  308. package/dist/components/ui/Toaster.js +38 -38
  309. package/dist/components/ui/ToolCallCard.d.ts +1 -1
  310. package/dist/components/ui/ToolCallCard.js +5 -1
  311. package/dist/components/ui/TreeView.js +38 -38
  312. package/dist/components/ui/charts/index.js +1 -1
  313. package/dist/components/ui/icons/index.js +38 -38
  314. package/dist/components/ui/text-effects/index.js +2 -2
  315. package/dist/hooks/use-scroll-to-bottom.d.ts +13 -0
  316. package/dist/hooks/use-scroll-to-bottom.js +2 -0
  317. package/dist/hooks/use-shader-preset.js +2 -2
  318. package/dist/index.js +43 -43
  319. package/dist/internal/local-image-assets.d.ts +12 -0
  320. package/dist/lib/shader-presets.js +1 -1
  321. package/dist/lib/tokens.config.d.ts +19 -0
  322. package/dist/messages/en.js +1 -1
  323. package/dist/messages/it.js +1 -1
  324. package/dist/test/PublicSeedTestProvider.js +2 -2
  325. package/dist/test/simulate-ime-composition.d.ts +54 -0
  326. package/dist/test/simulate-ime-composition.js +55 -0
  327. package/eslint-rules/nadicode/config.js +2 -0
  328. package/eslint-rules/nadicode/index.js +4 -0
  329. package/eslint-rules/nadicode/rules/no-deprecated-ds-import.js +77 -0
  330. package/eslint-rules/nadicode/rules/no-forbidden-page-kit-import.js +99 -0
  331. package/eslint-rules/nadicode/rules/no-unregistered-glass.js +2 -0
  332. package/package.json +895 -686
  333. package/scripts/ds-check.mjs +102 -73
  334. package/src/lib/tokens.config.js +63 -41
  335. package/dist/chunk-MLUSJTS2.js +0 -107
  336. package/dist/{chunk-5DKCZWC6.js → chunk-CQEUNASC.js} +1 -1
  337. package/dist/{chunk-4HRVRW2X.js → chunk-J2DCQDXO.js} +2 -2
  338. package/dist/{chunk-6MFAZU4B.js → chunk-RGE5OQMZ.js} +1 -1
  339. package/dist/{chunk-PJNHVPHF.js → chunk-TYP2MR3Q.js} +1 -1
@@ -0,0 +1,52 @@
1
+ 'use client';
2
+ import { TooltipProvider, Tooltip, TooltipTrigger, TooltipContent } from '../../chunk-MJ4CB6ZL.js';
3
+ import { ThumbsDownIcon } from '../../chunk-JHQ5NMLZ.js';
4
+ import { ThumbsUpIcon } from '../../chunk-WFJQ43SM.js';
5
+ import { PencilIcon } from '../../chunk-AP5Y5M3R.js';
6
+ import { RefreshCWIcon } from '../../chunk-Q7LVUGFL.js';
7
+ import { CopyIcon } from '../../chunk-TV4RSQH4.js';
8
+ import '../../chunk-ASKFAYYR.js';
9
+ import { cn } from '../../chunk-QYZT24TS.js';
10
+ import { jsx, jsxs } from 'react/jsx-runtime';
11
+
12
+ var ACTION_META = {
13
+ "copy": { label: "Copy", icon: /* @__PURE__ */ jsx(CopyIcon, { size: 14 }) },
14
+ "retry": { label: "Retry", icon: /* @__PURE__ */ jsx(RefreshCWIcon, { size: 14 }) },
15
+ "edit": { label: "Edit", icon: /* @__PURE__ */ jsx(PencilIcon, { size: 14 }) },
16
+ "thumbs-up": { label: "Thumbs up", icon: /* @__PURE__ */ jsx(ThumbsUpIcon, { size: 14 }) },
17
+ "thumbs-down": { label: "Thumbs down", icon: /* @__PURE__ */ jsx(ThumbsDownIcon, { size: 14 }) }
18
+ };
19
+ function ChatActions({ children, className }) {
20
+ return /* @__PURE__ */ jsx(TooltipProvider, { delayDuration: 300, children: /* @__PURE__ */ jsx(
21
+ "div",
22
+ {
23
+ role: "group",
24
+ "aria-label": "Message actions",
25
+ className: cn("flex items-center gap-0.5", className),
26
+ children
27
+ }
28
+ ) });
29
+ }
30
+ function ChatAction({ action, onClick, className }) {
31
+ const { label, icon } = ACTION_META[action];
32
+ return /* @__PURE__ */ jsxs(Tooltip, { children: [
33
+ /* @__PURE__ */ jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx(
34
+ "button",
35
+ {
36
+ type: "button",
37
+ onClick,
38
+ "aria-label": label,
39
+ className: cn(
40
+ "inline-flex h-7 w-7 min-h-10 min-w-10 items-center justify-center rounded-md",
41
+ "text-text-tertiary hover:text-text-secondary hover:bg-surface/80",
42
+ "transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-accent",
43
+ className
44
+ ),
45
+ children: icon
46
+ }
47
+ ) }),
48
+ /* @__PURE__ */ jsx(TooltipContent, { side: "bottom", className: "text-xs", children: label })
49
+ ] });
50
+ }
51
+
52
+ export { ChatAction, ChatActions };
@@ -0,0 +1,18 @@
1
+ import { type ReactNode } from 'react';
2
+ export interface ChatBranchProps {
3
+ current: number;
4
+ total: number;
5
+ onNavigate: (index: number) => void;
6
+ children: ReactNode;
7
+ className?: string;
8
+ }
9
+ export declare function ChatBranch({ current, total, onNavigate, children, className, }: ChatBranchProps): import("react/jsx-runtime").JSX.Element | null;
10
+ export declare function ChatBranchPrevious({ className }: {
11
+ className?: string;
12
+ }): import("react/jsx-runtime").JSX.Element;
13
+ export declare function ChatBranchNext({ className }: {
14
+ className?: string;
15
+ }): import("react/jsx-runtime").JSX.Element;
16
+ export declare function ChatBranchCount({ className }: {
17
+ className?: string;
18
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,84 @@
1
+ 'use client';
2
+ import { ChevronLeftIcon } from '../../chunk-G5YLGJXR.js';
3
+ import { ChevronRightIcon } from '../../chunk-G24VV5NO.js';
4
+ import '../../chunk-ASKFAYYR.js';
5
+ import { cn } from '../../chunk-QYZT24TS.js';
6
+ import { createContext, useContext } from 'react';
7
+ import { jsx, jsxs } from 'react/jsx-runtime';
8
+
9
+ var ChatBranchContext = createContext({
10
+ current: 1,
11
+ total: 1,
12
+ onNavigate: () => {
13
+ }
14
+ });
15
+ function ChatBranch({
16
+ current,
17
+ total,
18
+ onNavigate,
19
+ children,
20
+ className
21
+ }) {
22
+ if (total <= 1) return null;
23
+ return /* @__PURE__ */ jsx(ChatBranchContext.Provider, { value: { current, total, onNavigate }, children: /* @__PURE__ */ jsx(
24
+ "div",
25
+ {
26
+ role: "navigation",
27
+ "aria-label": "Response versions",
28
+ className: cn("inline-flex items-center gap-1 text-xs text-text-tertiary", className),
29
+ children
30
+ }
31
+ ) });
32
+ }
33
+ function ChatBranchPrevious({ className }) {
34
+ const { current, onNavigate } = useContext(ChatBranchContext);
35
+ const disabled = current <= 1;
36
+ return /* @__PURE__ */ jsx(
37
+ "button",
38
+ {
39
+ type: "button",
40
+ onClick: () => onNavigate(current - 1),
41
+ disabled,
42
+ "aria-label": "Previous version",
43
+ className: cn(
44
+ "inline-flex h-6 w-6 min-h-10 min-w-10 items-center justify-center rounded",
45
+ "hover:text-text-secondary transition-colors",
46
+ "focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-accent",
47
+ "disabled:opacity-40 disabled:cursor-not-allowed",
48
+ className
49
+ ),
50
+ children: /* @__PURE__ */ jsx(ChevronLeftIcon, { size: 14, "aria-hidden": "true" })
51
+ }
52
+ );
53
+ }
54
+ function ChatBranchNext({ className }) {
55
+ const { current, total, onNavigate } = useContext(ChatBranchContext);
56
+ const disabled = current >= total;
57
+ return /* @__PURE__ */ jsx(
58
+ "button",
59
+ {
60
+ type: "button",
61
+ onClick: () => onNavigate(current + 1),
62
+ disabled,
63
+ "aria-label": "Next version",
64
+ className: cn(
65
+ "inline-flex h-6 w-6 min-h-10 min-w-10 items-center justify-center rounded",
66
+ "hover:text-text-secondary transition-colors",
67
+ "focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-accent",
68
+ "disabled:opacity-40 disabled:cursor-not-allowed",
69
+ className
70
+ ),
71
+ children: /* @__PURE__ */ jsx(ChevronRightIcon, { size: 14, "aria-hidden": "true" })
72
+ }
73
+ );
74
+ }
75
+ function ChatBranchCount({ className }) {
76
+ const { current, total } = useContext(ChatBranchContext);
77
+ return /* @__PURE__ */ jsxs("span", { className: cn("tabular-nums select-none", className), children: [
78
+ current,
79
+ " / ",
80
+ total
81
+ ] });
82
+ }
83
+
84
+ export { ChatBranch, ChatBranchCount, ChatBranchNext, ChatBranchPrevious };
@@ -0,0 +1,25 @@
1
+ import { type ReactNode } from 'react';
2
+ export interface ChatChainOfThoughtProps {
3
+ children: ReactNode;
4
+ className?: string;
5
+ defaultOpen?: boolean;
6
+ open?: boolean;
7
+ onOpenChange?: (open: boolean) => void;
8
+ }
9
+ export declare function ChatChainOfThought({ children, className, defaultOpen, open, onOpenChange, }: ChatChainOfThoughtProps): import("react/jsx-runtime").JSX.Element;
10
+ export declare function ChatChainOfThoughtTrigger({ children, className, }: {
11
+ children: ReactNode;
12
+ className?: string;
13
+ }): import("react/jsx-runtime").JSX.Element;
14
+ export declare function ChatChainOfThoughtContent({ children, className, }: {
15
+ children: ReactNode;
16
+ className?: string;
17
+ }): import("react/jsx-runtime").JSX.Element;
18
+ type StepStatus = 'complete' | 'active' | 'pending';
19
+ export interface ChatChainOfThoughtStepProps {
20
+ status: StepStatus;
21
+ children: ReactNode;
22
+ className?: string;
23
+ }
24
+ export declare function ChatChainOfThoughtStep({ status, children, className, }: ChatChainOfThoughtStepProps): import("react/jsx-runtime").JSX.Element;
25
+ export {};
@@ -0,0 +1,99 @@
1
+ 'use client';
2
+ import { Collapsible, CollapsibleTrigger, CollapsibleContent } from '../../chunk-VJIL7W55.js';
3
+ import { LoaderIcon } from '../../chunk-R3AO6AZM.js';
4
+ import { CircleIcon } from '../../chunk-GCUTJI7M.js';
5
+ import { CheckIcon } from '../../chunk-CXACRCZ4.js';
6
+ import { ChevronDownIcon } from '../../chunk-HJBXUXTD.js';
7
+ import '../../chunk-ASKFAYYR.js';
8
+ import { cn } from '../../chunk-QYZT24TS.js';
9
+ import { jsx, jsxs } from 'react/jsx-runtime';
10
+
11
+ function ChatChainOfThought({
12
+ children,
13
+ className,
14
+ defaultOpen,
15
+ open,
16
+ onOpenChange
17
+ }) {
18
+ return /* @__PURE__ */ jsx(
19
+ Collapsible,
20
+ {
21
+ defaultOpen,
22
+ open,
23
+ onOpenChange,
24
+ className: cn("space-y-1", className),
25
+ children
26
+ }
27
+ );
28
+ }
29
+ function ChatChainOfThoughtTrigger({
30
+ children,
31
+ className
32
+ }) {
33
+ return /* @__PURE__ */ jsxs(
34
+ CollapsibleTrigger,
35
+ {
36
+ className: cn(
37
+ "inline-flex min-h-10 min-w-10 items-center gap-1.5 rounded-lg px-2 py-1",
38
+ "text-xs text-text-secondary",
39
+ "hover:bg-surface/80 hover:text-text-primary transition-colors",
40
+ "focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-accent",
41
+ className
42
+ ),
43
+ children: [
44
+ /* @__PURE__ */ jsx("span", { children }),
45
+ /* @__PURE__ */ jsx(
46
+ ChevronDownIcon,
47
+ {
48
+ size: 14,
49
+ "aria-hidden": "true",
50
+ className: "transition-transform [[data-state=open]>&]:rotate-180"
51
+ }
52
+ )
53
+ ]
54
+ }
55
+ );
56
+ }
57
+ function ChatChainOfThoughtContent({
58
+ children,
59
+ className
60
+ }) {
61
+ return /* @__PURE__ */ jsx(CollapsibleContent, { children: /* @__PURE__ */ jsx(
62
+ "div",
63
+ {
64
+ role: "list",
65
+ "aria-label": "Reasoning steps",
66
+ className: cn("space-y-1 pl-1", className),
67
+ children
68
+ }
69
+ ) });
70
+ }
71
+ var STEP_ICONS = {
72
+ complete: /* @__PURE__ */ jsx(CheckIcon, { size: 14, "aria-hidden": "true", className: "text-success" }),
73
+ active: /* @__PURE__ */ jsx(LoaderIcon, { size: 14, "aria-hidden": "true", className: "animate-spin text-accent" }),
74
+ pending: /* @__PURE__ */ jsx(CircleIcon, { size: 14, "aria-hidden": "true", className: "text-text-tertiary" })
75
+ };
76
+ function ChatChainOfThoughtStep({
77
+ status,
78
+ children,
79
+ className
80
+ }) {
81
+ return /* @__PURE__ */ jsxs(
82
+ "div",
83
+ {
84
+ role: "listitem",
85
+ "data-slot": "step",
86
+ className: cn(
87
+ "flex items-center gap-2 rounded-md px-2 py-1 text-sm text-text-secondary",
88
+ status === "pending" && "opacity-50",
89
+ className
90
+ ),
91
+ children: [
92
+ STEP_ICONS[status],
93
+ /* @__PURE__ */ jsx("span", { children })
94
+ ]
95
+ }
96
+ );
97
+ }
98
+
99
+ export { ChatChainOfThought, ChatChainOfThoughtContent, ChatChainOfThoughtStep, ChatChainOfThoughtTrigger };
@@ -0,0 +1,37 @@
1
+ import { type ReactNode } from 'react';
2
+ type ChatConfirmationStatus = 'pending' | 'approved' | 'rejected';
3
+ export interface ChatConfirmationProps {
4
+ status: ChatConfirmationStatus;
5
+ children: ReactNode;
6
+ className?: string;
7
+ }
8
+ export declare function ChatConfirmation({ status, children, className, }: ChatConfirmationProps): import("react/jsx-runtime").JSX.Element;
9
+ export declare function ChatConfirmationTitle({ children, className, }: {
10
+ children: ReactNode;
11
+ className?: string;
12
+ }): import("react/jsx-runtime").JSX.Element;
13
+ export declare function ChatConfirmationDescription({ children, className, }: {
14
+ children: ReactNode;
15
+ className?: string;
16
+ }): import("react/jsx-runtime").JSX.Element;
17
+ export interface ChatConfirmationActionsProps {
18
+ onApprove: () => void;
19
+ onReject: () => void;
20
+ approveLabel?: string;
21
+ rejectLabel?: string;
22
+ className?: string;
23
+ }
24
+ export declare function ChatConfirmationActions({ onApprove, onReject, approveLabel, rejectLabel, className, }: ChatConfirmationActionsProps): import("react/jsx-runtime").JSX.Element | null;
25
+ export declare function ChatConfirmationPending({ children, className, }: {
26
+ children: ReactNode;
27
+ className?: string;
28
+ }): import("react/jsx-runtime").JSX.Element | null;
29
+ export declare function ChatConfirmationApproved({ children, className, }: {
30
+ children: ReactNode;
31
+ className?: string;
32
+ }): import("react/jsx-runtime").JSX.Element | null;
33
+ export declare function ChatConfirmationRejected({ children, className, }: {
34
+ children: ReactNode;
35
+ className?: string;
36
+ }): import("react/jsx-runtime").JSX.Element | null;
37
+ export {};
@@ -0,0 +1,115 @@
1
+ 'use client';
2
+ import { CheckIcon } from '../../chunk-CXACRCZ4.js';
3
+ import { XIcon } from '../../chunk-UIUMTURU.js';
4
+ import '../../chunk-ASKFAYYR.js';
5
+ import { cn } from '../../chunk-QYZT24TS.js';
6
+ import { createContext, useContext } from 'react';
7
+ import { jsx, jsxs } from 'react/jsx-runtime';
8
+
9
+ var ChatConfirmationContext = createContext({
10
+ status: "pending"
11
+ });
12
+ function ChatConfirmation({
13
+ status,
14
+ children,
15
+ className
16
+ }) {
17
+ return /* @__PURE__ */ jsx(ChatConfirmationContext.Provider, { value: { status }, children: /* @__PURE__ */ jsx(
18
+ "div",
19
+ {
20
+ role: "status",
21
+ "aria-label": "Confirmation",
22
+ className: cn(
23
+ "rounded-xl border border-border p-4 space-y-3",
24
+ className
25
+ ),
26
+ children
27
+ }
28
+ ) });
29
+ }
30
+ function ChatConfirmationTitle({
31
+ children,
32
+ className
33
+ }) {
34
+ return /* @__PURE__ */ jsx("h3", { className: cn("text-sm font-medium text-text-primary", className), children });
35
+ }
36
+ function ChatConfirmationDescription({
37
+ children,
38
+ className
39
+ }) {
40
+ return /* @__PURE__ */ jsx("p", { className: cn("text-sm text-text-secondary", className), children });
41
+ }
42
+ function ChatConfirmationActions({
43
+ onApprove,
44
+ onReject,
45
+ approveLabel = "Approve",
46
+ rejectLabel = "Reject",
47
+ className
48
+ }) {
49
+ const { status } = useContext(ChatConfirmationContext);
50
+ if (status !== "pending") return null;
51
+ return /* @__PURE__ */ jsxs("div", { className: cn("flex items-center gap-2", className), children: [
52
+ /* @__PURE__ */ jsxs(
53
+ "button",
54
+ {
55
+ type: "button",
56
+ onClick: onApprove,
57
+ "aria-label": approveLabel,
58
+ className: cn(
59
+ "inline-flex min-h-10 min-w-10 items-center justify-center gap-1.5 rounded-lg",
60
+ "bg-accent px-3 py-1.5 text-xs font-medium text-accent-foreground",
61
+ "hover:bg-accent/90 transition-colors",
62
+ "focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-accent"
63
+ ),
64
+ children: [
65
+ /* @__PURE__ */ jsx(CheckIcon, { size: 14, "aria-hidden": "true" }),
66
+ approveLabel
67
+ ]
68
+ }
69
+ ),
70
+ /* @__PURE__ */ jsxs(
71
+ "button",
72
+ {
73
+ type: "button",
74
+ onClick: onReject,
75
+ "aria-label": rejectLabel,
76
+ className: cn(
77
+ "inline-flex min-h-10 min-w-10 items-center justify-center gap-1.5 rounded-lg",
78
+ "border border-border px-3 py-1.5 text-xs font-medium text-text-secondary",
79
+ "hover:bg-surface/80 hover:text-text-primary transition-colors",
80
+ "focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-accent"
81
+ ),
82
+ children: [
83
+ /* @__PURE__ */ jsx(XIcon, { size: 14, "aria-hidden": "true" }),
84
+ rejectLabel
85
+ ]
86
+ }
87
+ )
88
+ ] });
89
+ }
90
+ function ChatConfirmationPending({
91
+ children,
92
+ className
93
+ }) {
94
+ const { status } = useContext(ChatConfirmationContext);
95
+ if (status !== "pending") return null;
96
+ return /* @__PURE__ */ jsx("div", { className, children });
97
+ }
98
+ function ChatConfirmationApproved({
99
+ children,
100
+ className
101
+ }) {
102
+ const { status } = useContext(ChatConfirmationContext);
103
+ if (status !== "approved") return null;
104
+ return /* @__PURE__ */ jsx("div", { className, children });
105
+ }
106
+ function ChatConfirmationRejected({
107
+ children,
108
+ className
109
+ }) {
110
+ const { status } = useContext(ChatConfirmationContext);
111
+ if (status !== "rejected") return null;
112
+ return /* @__PURE__ */ jsx("div", { className, children });
113
+ }
114
+
115
+ export { ChatConfirmation, ChatConfirmationActions, ChatConfirmationApproved, ChatConfirmationDescription, ChatConfirmationPending, ChatConfirmationRejected, ChatConfirmationTitle };
@@ -0,0 +1,18 @@
1
+ import { type ReactNode, type Ref } from 'react';
2
+ export interface ChatGreetingProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'children'> {
3
+ /** Greeting headline. */
4
+ title?: string;
5
+ /** Greeting subtext. */
6
+ subtitle?: string;
7
+ /** Custom content instead of title/subtitle. */
8
+ children?: ReactNode;
9
+ ref?: Ref<HTMLDivElement>;
10
+ }
11
+ /**
12
+ * ChatGreeting - animated empty state shown when a conversation has zero messages.
13
+ *
14
+ * Renders configurable title and subtitle with a 300ms Framer Motion fade-in
15
+ * and staggered entrance. Accepts children for fully custom content.
16
+ * Consumers wrap this in AnimatePresence for fade-out when messages appear.
17
+ */
18
+ export declare function ChatGreeting({ title, subtitle, children, className, ref, ...props }: ChatGreetingProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,80 @@
1
+ 'use client';
2
+ import { m } from '../../chunk-PD2YEH3H.js';
3
+ import '../../chunk-CRY67BIF.js';
4
+ import '../../chunk-HJC6U46F.js';
5
+ import { cn } from '../../chunk-QYZT24TS.js';
6
+ import { useReducedMotion } from 'motion/react';
7
+ import { jsx, jsxs } from 'react/jsx-runtime';
8
+
9
+ var FADE_DURATION_S = 0.3;
10
+ var TITLE_DELAY_S = 0;
11
+ var SUBTITLE_DELAY_S = 0.1;
12
+ function ChatGreeting({
13
+ title = "Hello!",
14
+ subtitle = "How can I help you today?",
15
+ children,
16
+ className,
17
+ ref,
18
+ ...props
19
+ }) {
20
+ const prefersReduced = useReducedMotion();
21
+ if (children) {
22
+ return /* @__PURE__ */ jsx(
23
+ "div",
24
+ {
25
+ ref,
26
+ className: cn("flex flex-col items-center justify-center gap-2", className),
27
+ ...props,
28
+ children
29
+ }
30
+ );
31
+ }
32
+ if (prefersReduced) {
33
+ return /* @__PURE__ */ jsxs(
34
+ "div",
35
+ {
36
+ ref,
37
+ className: cn("flex flex-col items-center justify-center gap-2", className),
38
+ ...props,
39
+ children: [
40
+ /* @__PURE__ */ jsx("p", { className: "text-xl font-semibold text-text-primary", children: title }),
41
+ subtitle ? /* @__PURE__ */ jsx("p", { className: "text-lg text-text-secondary", children: subtitle }) : null
42
+ ]
43
+ }
44
+ );
45
+ }
46
+ return /* @__PURE__ */ jsxs(
47
+ "div",
48
+ {
49
+ ref,
50
+ className: cn("flex flex-col items-center justify-center gap-2", className),
51
+ ...props,
52
+ children: [
53
+ /* @__PURE__ */ jsx(
54
+ m.p,
55
+ {
56
+ className: "text-xl font-semibold text-text-primary",
57
+ initial: { opacity: 0, y: 10 },
58
+ animate: { opacity: 1, y: 0 },
59
+ exit: { opacity: 0, y: 10 },
60
+ transition: { duration: FADE_DURATION_S, delay: TITLE_DELAY_S },
61
+ children: title
62
+ }
63
+ ),
64
+ subtitle ? /* @__PURE__ */ jsx(
65
+ m.p,
66
+ {
67
+ className: "text-lg text-text-secondary",
68
+ initial: { opacity: 0, y: 10 },
69
+ animate: { opacity: 1, y: 0 },
70
+ exit: { opacity: 0, y: 10 },
71
+ transition: { duration: FADE_DURATION_S, delay: SUBTITLE_DELAY_S },
72
+ children: subtitle
73
+ }
74
+ ) : null
75
+ ]
76
+ }
77
+ );
78
+ }
79
+
80
+ export { ChatGreeting };
@@ -0,0 +1,40 @@
1
+ import { type ReactNode, type Ref } from 'react';
2
+ type ChatMessageRole = 'user' | 'assistant' | 'agent' | 'system';
3
+ declare const chatMessageVariants: (props?: ({
4
+ role?: "user" | "assistant" | "system" | null | undefined;
5
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
6
+ declare const chatMessageContentVariants: (props?: ({
7
+ role?: "user" | "assistant" | "system" | null | undefined;
8
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
9
+ export interface ChatMessageProps extends React.HTMLAttributes<HTMLDivElement> {
10
+ /**
11
+ * Message role.
12
+ * @deprecated Use `"assistant"` instead of `"agent"`.
13
+ * The `"agent"` alias will be removed in the next major version.
14
+ */
15
+ role: ChatMessageRole;
16
+ children: ReactNode;
17
+ ref?: Ref<HTMLDivElement>;
18
+ }
19
+ /**
20
+ * ChatMessage - role-based message layout compound.
21
+ *
22
+ * User right-aligned, assistant left-aligned, system centered.
23
+ * Compound: ChatMessage, ChatMessageContent, ChatMessageAvatar.
24
+ */
25
+ export declare function ChatMessage({ role, children, className, ref, ...props }: ChatMessageProps): import("react/jsx-runtime").JSX.Element;
26
+ export interface ChatMessageContentProps extends React.HTMLAttributes<HTMLDivElement> {
27
+ children: ReactNode;
28
+ ref?: Ref<HTMLDivElement>;
29
+ }
30
+ export declare function ChatMessageContent({ children, className, ref, ...props }: ChatMessageContentProps): import("react/jsx-runtime").JSX.Element;
31
+ export interface ChatMessageAvatarProps {
32
+ /** Avatar image source URL. */
33
+ src: string;
34
+ /** Display name (first 2 chars used as fallback). */
35
+ name?: string;
36
+ className?: string;
37
+ ref?: Ref<HTMLSpanElement>;
38
+ }
39
+ export declare function ChatMessageAvatar({ src, name, className, ref, }: ChatMessageAvatarProps): import("react/jsx-runtime").JSX.Element;
40
+ export { chatMessageVariants, chatMessageContentVariants };
@@ -0,0 +1,96 @@
1
+ 'use client';
2
+ import { Avatar, AvatarImage, AvatarFallback } from '../../chunk-NAAU5IWU.js';
3
+ import { cn } from '../../chunk-QYZT24TS.js';
4
+ import { createContext, useContext } from 'react';
5
+ import { cva } from 'class-variance-authority';
6
+ import { jsx, jsxs } from 'react/jsx-runtime';
7
+
8
+ var ChatMessageContext = createContext("user");
9
+ function useMessageRole() {
10
+ return useContext(ChatMessageContext);
11
+ }
12
+ function normalizeRole(role) {
13
+ return role === "agent" ? "assistant" : role;
14
+ }
15
+ var chatMessageVariants = cva("flex gap-4 max-w-full", {
16
+ variants: {
17
+ role: {
18
+ user: "flex-row-reverse",
19
+ assistant: "flex-row",
20
+ system: "justify-center"
21
+ }
22
+ },
23
+ defaultVariants: { role: "assistant" }
24
+ });
25
+ var chatMessageContentVariants = cva(
26
+ "rounded-2xl px-4 py-2.5 text-sm leading-relaxed",
27
+ {
28
+ variants: {
29
+ role: {
30
+ user: "bg-primary text-primary-foreground max-w-[80%] rounded-br-sm",
31
+ assistant: "bg-surface border border-border text-text-primary max-w-[80%] rounded-bl-sm",
32
+ system: "bg-muted/50 text-text-tertiary text-xs italic px-4 py-1.5 rounded-lg"
33
+ }
34
+ },
35
+ defaultVariants: { role: "assistant" }
36
+ }
37
+ );
38
+ function ChatMessage({
39
+ role,
40
+ children,
41
+ className,
42
+ ref,
43
+ ...props
44
+ }) {
45
+ const normalized = normalizeRole(role);
46
+ return /* @__PURE__ */ jsx(ChatMessageContext.Provider, { value: role, children: /* @__PURE__ */ jsx(
47
+ "div",
48
+ {
49
+ ref,
50
+ className: cn(chatMessageVariants({ role: normalized }), className),
51
+ ...props,
52
+ children
53
+ }
54
+ ) });
55
+ }
56
+ function ChatMessageContent({
57
+ children,
58
+ className,
59
+ ref,
60
+ ...props
61
+ }) {
62
+ const role = normalizeRole(useMessageRole());
63
+ return /* @__PURE__ */ jsx(
64
+ "div",
65
+ {
66
+ ref,
67
+ className: cn(chatMessageContentVariants({ role }), className),
68
+ ...props,
69
+ children
70
+ }
71
+ );
72
+ }
73
+ function ChatMessageAvatar({
74
+ src,
75
+ name,
76
+ className,
77
+ ref
78
+ }) {
79
+ const role = normalizeRole(useMessageRole());
80
+ const fallback = name ? name.slice(0, 2).toUpperCase() : role === "user" ? "U" : "AI";
81
+ const label = role === "user" ? "User avatar" : "Assistant avatar";
82
+ return /* @__PURE__ */ jsxs(
83
+ Avatar,
84
+ {
85
+ ref,
86
+ className: cn("h-8 w-8 shrink-0 ring-1 ring-border", className),
87
+ "aria-label": label,
88
+ children: [
89
+ src ? /* @__PURE__ */ jsx(AvatarImage, { src, alt: "" }) : null,
90
+ /* @__PURE__ */ jsx(AvatarFallback, { className: "text-xs", children: fallback })
91
+ ]
92
+ }
93
+ );
94
+ }
95
+
96
+ export { ChatMessage, ChatMessageAvatar, ChatMessageContent, chatMessageContentVariants, chatMessageVariants };