@yh-ui/components 0.1.10 → 0.1.12

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 (386) hide show
  1. package/dist/ai-action-group/__tests__/ai-action-group.ssr.test.cjs +55 -0
  2. package/dist/ai-action-group/__tests__/ai-action-group.ssr.test.d.ts +1 -0
  3. package/dist/ai-action-group/__tests__/ai-action-group.ssr.test.mjs +39 -0
  4. package/dist/ai-action-group/__tests__/ai-action-group.test.cjs +149 -0
  5. package/dist/ai-action-group/__tests__/ai-action-group.test.d.ts +1 -0
  6. package/dist/ai-action-group/__tests__/ai-action-group.test.mjs +104 -0
  7. package/dist/ai-action-group/index.cjs +26 -0
  8. package/dist/ai-action-group/index.d.ts +3 -0
  9. package/dist/ai-action-group/index.mjs +5 -0
  10. package/dist/ai-action-group/src/ai-action-group.cjs +50 -0
  11. package/dist/ai-action-group/src/ai-action-group.css +517 -0
  12. package/dist/ai-action-group/src/ai-action-group.d.ts +55 -0
  13. package/dist/ai-action-group/src/ai-action-group.d.vue.ts +40 -0
  14. package/dist/ai-action-group/src/ai-action-group.mjs +44 -0
  15. package/dist/ai-action-group/src/ai-action-group.vue +602 -0
  16. package/dist/ai-action-group/src/ai-action-group.vue.d.ts +40 -0
  17. package/dist/ai-agent-card/__tests__/ai-agent-card.ssr.test.cjs +61 -0
  18. package/dist/ai-agent-card/__tests__/ai-agent-card.ssr.test.d.ts +1 -0
  19. package/dist/ai-agent-card/__tests__/ai-agent-card.ssr.test.mjs +65 -0
  20. package/dist/ai-agent-card/__tests__/ai-agent-card.test.cjs +70 -0
  21. package/dist/ai-agent-card/__tests__/ai-agent-card.test.d.ts +1 -0
  22. package/dist/ai-agent-card/__tests__/ai-agent-card.test.mjs +64 -0
  23. package/dist/ai-agent-card/index.cjs +26 -0
  24. package/dist/ai-agent-card/index.d.ts +3 -0
  25. package/dist/ai-agent-card/index.mjs +5 -0
  26. package/dist/ai-agent-card/src/ai-agent-card.cjs +74 -0
  27. package/dist/ai-agent-card/src/ai-agent-card.css +859 -0
  28. package/dist/ai-agent-card/src/ai-agent-card.d.ts +122 -0
  29. package/dist/ai-agent-card/src/ai-agent-card.d.vue.ts +62 -0
  30. package/dist/ai-agent-card/src/ai-agent-card.mjs +68 -0
  31. package/dist/ai-agent-card/src/ai-agent-card.vue +1029 -0
  32. package/dist/ai-agent-card/src/ai-agent-card.vue.d.ts +62 -0
  33. package/dist/ai-artifacts/__tests__/ai-artifacts.ssr.test.cjs +73 -0
  34. package/dist/ai-artifacts/__tests__/ai-artifacts.ssr.test.d.ts +1 -0
  35. package/dist/ai-artifacts/__tests__/ai-artifacts.ssr.test.mjs +68 -0
  36. package/dist/ai-artifacts/__tests__/ai-artifacts.test.cjs +128 -0
  37. package/dist/ai-artifacts/__tests__/ai-artifacts.test.d.ts +1 -0
  38. package/dist/ai-artifacts/__tests__/ai-artifacts.test.mjs +109 -0
  39. package/dist/ai-artifacts/index.cjs +26 -0
  40. package/dist/ai-artifacts/index.d.ts +3 -0
  41. package/dist/ai-artifacts/index.mjs +5 -0
  42. package/dist/ai-artifacts/src/ai-artifacts.cjs +55 -0
  43. package/dist/ai-artifacts/src/ai-artifacts.css +633 -0
  44. package/dist/ai-artifacts/src/ai-artifacts.d.ts +93 -0
  45. package/dist/ai-artifacts/src/ai-artifacts.d.vue.ts +33 -0
  46. package/dist/ai-artifacts/src/ai-artifacts.mjs +49 -0
  47. package/dist/ai-artifacts/src/ai-artifacts.vue +803 -0
  48. package/dist/ai-artifacts/src/ai-artifacts.vue.d.ts +33 -0
  49. package/dist/ai-bubble/__tests__/ai-bubble.ssr.test.cjs +87 -0
  50. package/dist/ai-bubble/__tests__/ai-bubble.ssr.test.d.ts +1 -0
  51. package/dist/ai-bubble/__tests__/ai-bubble.ssr.test.mjs +58 -0
  52. package/dist/ai-bubble/__tests__/ai-bubble.test.cjs +227 -0
  53. package/dist/ai-bubble/__tests__/ai-bubble.test.d.ts +1 -0
  54. package/dist/ai-bubble/__tests__/ai-bubble.test.mjs +123 -0
  55. package/dist/ai-bubble/index.cjs +26 -0
  56. package/dist/ai-bubble/index.d.ts +3 -0
  57. package/dist/ai-bubble/index.mjs +5 -0
  58. package/dist/ai-bubble/src/ai-bubble.cjs +86 -0
  59. package/dist/ai-bubble/src/ai-bubble.css +932 -0
  60. package/dist/ai-bubble/src/ai-bubble.d.ts +126 -0
  61. package/dist/ai-bubble/src/ai-bubble.d.vue.ts +110 -0
  62. package/dist/ai-bubble/src/ai-bubble.mjs +80 -0
  63. package/dist/ai-bubble/src/ai-bubble.vue +1300 -0
  64. package/dist/ai-bubble/src/ai-bubble.vue.d.ts +110 -0
  65. package/dist/ai-chat/__tests__/ai-chat.ssr.test.cjs +82 -0
  66. package/dist/ai-chat/__tests__/ai-chat.ssr.test.d.ts +1 -0
  67. package/dist/ai-chat/__tests__/ai-chat.ssr.test.mjs +69 -0
  68. package/dist/ai-chat/__tests__/ai-chat.test.cjs +169 -0
  69. package/dist/ai-chat/__tests__/ai-chat.test.d.ts +1 -0
  70. package/dist/ai-chat/__tests__/ai-chat.test.mjs +121 -0
  71. package/dist/ai-chat/index.cjs +26 -0
  72. package/dist/ai-chat/index.d.ts +3 -0
  73. package/dist/ai-chat/index.mjs +5 -0
  74. package/dist/ai-chat/src/ai-chat.cjs +41 -0
  75. package/dist/ai-chat/src/ai-chat.css +503 -0
  76. package/dist/ai-chat/src/ai-chat.d.ts +57 -0
  77. package/dist/ai-chat/src/ai-chat.d.vue.ts +43 -0
  78. package/dist/ai-chat/src/ai-chat.mjs +35 -0
  79. package/dist/ai-chat/src/ai-chat.vue +606 -0
  80. package/dist/ai-chat/src/ai-chat.vue.d.ts +43 -0
  81. package/dist/ai-code-block/__tests__/ai-code-block.ssr.test.cjs +66 -0
  82. package/dist/ai-code-block/__tests__/ai-code-block.ssr.test.d.ts +1 -0
  83. package/dist/ai-code-block/__tests__/ai-code-block.ssr.test.mjs +48 -0
  84. package/dist/ai-code-block/__tests__/ai-code-block.test.cjs +174 -0
  85. package/dist/ai-code-block/__tests__/ai-code-block.test.d.ts +1 -0
  86. package/dist/ai-code-block/__tests__/ai-code-block.test.mjs +108 -0
  87. package/dist/ai-code-block/index.cjs +26 -0
  88. package/dist/ai-code-block/index.d.ts +3 -0
  89. package/dist/ai-code-block/index.mjs +5 -0
  90. package/dist/ai-code-block/src/ai-code-block.cjs +79 -0
  91. package/dist/ai-code-block/src/ai-code-block.css +589 -0
  92. package/dist/ai-code-block/src/ai-code-block.d.ts +76 -0
  93. package/dist/ai-code-block/src/ai-code-block.d.vue.ts +63 -0
  94. package/dist/ai-code-block/src/ai-code-block.mjs +73 -0
  95. package/dist/ai-code-block/src/ai-code-block.vue +706 -0
  96. package/dist/ai-code-block/src/ai-code-block.vue.d.ts +63 -0
  97. package/dist/ai-conversations/__tests__/ai-conversations.ssr.test.cjs +50 -0
  98. package/dist/ai-conversations/__tests__/ai-conversations.ssr.test.d.ts +1 -0
  99. package/dist/ai-conversations/__tests__/ai-conversations.ssr.test.mjs +42 -0
  100. package/dist/ai-conversations/__tests__/ai-conversations.test.cjs +67 -0
  101. package/dist/ai-conversations/__tests__/ai-conversations.test.d.ts +1 -0
  102. package/dist/ai-conversations/__tests__/ai-conversations.test.mjs +51 -0
  103. package/dist/ai-conversations/index.cjs +26 -0
  104. package/dist/ai-conversations/index.d.ts +3 -0
  105. package/dist/ai-conversations/index.mjs +5 -0
  106. package/dist/ai-conversations/src/ai-conversations.cjs +69 -0
  107. package/dist/ai-conversations/src/ai-conversations.css +679 -0
  108. package/dist/ai-conversations/src/ai-conversations.d.ts +67 -0
  109. package/dist/ai-conversations/src/ai-conversations.d.vue.ts +52 -0
  110. package/dist/ai-conversations/src/ai-conversations.mjs +63 -0
  111. package/dist/ai-conversations/src/ai-conversations.vue +949 -0
  112. package/dist/ai-conversations/src/ai-conversations.vue.d.ts +52 -0
  113. package/dist/ai-editor-sender/__tests__/ai-editor-sender.ssr.test.cjs +62 -0
  114. package/dist/ai-editor-sender/__tests__/ai-editor-sender.ssr.test.d.ts +1 -0
  115. package/dist/ai-editor-sender/__tests__/ai-editor-sender.ssr.test.mjs +50 -0
  116. package/dist/ai-editor-sender/__tests__/ai-editor-sender.test.cjs +315 -0
  117. package/dist/ai-editor-sender/__tests__/ai-editor-sender.test.d.ts +1 -0
  118. package/dist/ai-editor-sender/__tests__/ai-editor-sender.test.mjs +226 -0
  119. package/dist/ai-editor-sender/index.cjs +26 -0
  120. package/dist/ai-editor-sender/index.d.ts +3 -0
  121. package/dist/ai-editor-sender/index.mjs +5 -0
  122. package/dist/ai-editor-sender/src/ai-editor-sender.cjs +66 -0
  123. package/dist/ai-editor-sender/src/ai-editor-sender.css +566 -0
  124. package/dist/ai-editor-sender/src/ai-editor-sender.d.ts +70 -0
  125. package/dist/ai-editor-sender/src/ai-editor-sender.d.vue.ts +70 -0
  126. package/dist/ai-editor-sender/src/ai-editor-sender.mjs +60 -0
  127. package/dist/ai-editor-sender/src/ai-editor-sender.vue +713 -0
  128. package/dist/ai-editor-sender/src/ai-editor-sender.vue.d.ts +70 -0
  129. package/dist/ai-prompts/__tests__/ai-prompts.ssr.test.cjs +49 -0
  130. package/dist/ai-prompts/__tests__/ai-prompts.ssr.test.d.ts +1 -0
  131. package/dist/ai-prompts/__tests__/ai-prompts.ssr.test.mjs +41 -0
  132. package/dist/ai-prompts/__tests__/ai-prompts.test.cjs +54 -0
  133. package/dist/ai-prompts/__tests__/ai-prompts.test.d.ts +1 -0
  134. package/dist/ai-prompts/__tests__/ai-prompts.test.mjs +38 -0
  135. package/dist/ai-prompts/index.cjs +26 -0
  136. package/dist/ai-prompts/index.d.ts +3 -0
  137. package/dist/ai-prompts/index.mjs +5 -0
  138. package/dist/ai-prompts/src/ai-prompts.cjs +42 -0
  139. package/dist/ai-prompts/src/ai-prompts.css +572 -0
  140. package/dist/ai-prompts/src/ai-prompts.d.ts +45 -0
  141. package/dist/ai-prompts/src/ai-prompts.d.vue.ts +44 -0
  142. package/dist/ai-prompts/src/ai-prompts.mjs +36 -0
  143. package/dist/ai-prompts/src/ai-prompts.vue +646 -0
  144. package/dist/ai-prompts/src/ai-prompts.vue.d.ts +44 -0
  145. package/dist/ai-provider/__tests__/ai-provider.ssr.test.cjs +33 -0
  146. package/dist/ai-provider/__tests__/ai-provider.ssr.test.d.ts +1 -0
  147. package/dist/ai-provider/__tests__/ai-provider.ssr.test.mjs +34 -0
  148. package/dist/ai-provider/__tests__/ai-provider.test.cjs +38 -0
  149. package/dist/ai-provider/__tests__/ai-provider.test.d.ts +1 -0
  150. package/dist/ai-provider/__tests__/ai-provider.test.mjs +33 -0
  151. package/dist/ai-provider/index.cjs +38 -0
  152. package/dist/ai-provider/index.d.ts +4 -0
  153. package/dist/ai-provider/index.mjs +6 -0
  154. package/dist/ai-provider/src/ai-provider.cjs +7 -0
  155. package/dist/ai-provider/src/ai-provider.d.ts +88 -0
  156. package/dist/ai-provider/src/ai-provider.d.vue.ts +48 -0
  157. package/dist/ai-provider/src/ai-provider.mjs +1 -0
  158. package/dist/ai-provider/src/ai-provider.vue +24 -0
  159. package/dist/ai-provider/src/ai-provider.vue.d.ts +48 -0
  160. package/dist/ai-provider/src/use-ai-provider.cjs +11 -0
  161. package/dist/ai-provider/src/use-ai-provider.d.ts +10 -0
  162. package/dist/ai-provider/src/use-ai-provider.mjs +5 -0
  163. package/dist/ai-sender/__tests__/ai-sender.ssr.test.cjs +46 -0
  164. package/dist/ai-sender/__tests__/ai-sender.ssr.test.d.ts +1 -0
  165. package/dist/ai-sender/__tests__/ai-sender.ssr.test.mjs +37 -0
  166. package/dist/ai-sender/__tests__/ai-sender.test.cjs +388 -0
  167. package/dist/ai-sender/__tests__/ai-sender.test.d.ts +1 -0
  168. package/dist/ai-sender/__tests__/ai-sender.test.mjs +248 -0
  169. package/dist/ai-sender/index.cjs +26 -0
  170. package/dist/ai-sender/index.d.ts +3 -0
  171. package/dist/ai-sender/index.mjs +5 -0
  172. package/dist/ai-sender/src/ai-sender.cjs +91 -0
  173. package/dist/ai-sender/src/ai-sender.css +754 -0
  174. package/dist/ai-sender/src/ai-sender.d.ts +140 -0
  175. package/dist/ai-sender/src/ai-sender.d.vue.ts +69 -0
  176. package/dist/ai-sender/src/ai-sender.mjs +85 -0
  177. package/dist/ai-sender/src/ai-sender.vue +1032 -0
  178. package/dist/ai-sender/src/ai-sender.vue.d.ts +69 -0
  179. package/dist/ai-sources/__tests__/ai-sources.ssr.test.cjs +72 -0
  180. package/dist/ai-sources/__tests__/ai-sources.ssr.test.d.ts +1 -0
  181. package/dist/ai-sources/__tests__/ai-sources.ssr.test.mjs +82 -0
  182. package/dist/ai-sources/__tests__/ai-sources.test.cjs +93 -0
  183. package/dist/ai-sources/__tests__/ai-sources.test.d.ts +1 -0
  184. package/dist/ai-sources/__tests__/ai-sources.test.mjs +89 -0
  185. package/dist/ai-sources/index.cjs +26 -0
  186. package/dist/ai-sources/index.d.ts +3 -0
  187. package/dist/ai-sources/index.mjs +5 -0
  188. package/dist/ai-sources/src/ai-sources.cjs +59 -0
  189. package/dist/ai-sources/src/ai-sources.css +830 -0
  190. package/dist/ai-sources/src/ai-sources.d.ts +79 -0
  191. package/dist/ai-sources/src/ai-sources.d.vue.ts +45 -0
  192. package/dist/ai-sources/src/ai-sources.mjs +53 -0
  193. package/dist/ai-sources/src/ai-sources.vue +1109 -0
  194. package/dist/ai-sources/src/ai-sources.vue.d.ts +45 -0
  195. package/dist/ai-thinking/__tests__/ai-thinking.ssr.test.cjs +56 -0
  196. package/dist/ai-thinking/__tests__/ai-thinking.ssr.test.d.ts +1 -0
  197. package/dist/ai-thinking/__tests__/ai-thinking.ssr.test.mjs +42 -0
  198. package/dist/ai-thinking/__tests__/ai-thinking.test.cjs +151 -0
  199. package/dist/ai-thinking/__tests__/ai-thinking.test.d.ts +1 -0
  200. package/dist/ai-thinking/__tests__/ai-thinking.test.mjs +96 -0
  201. package/dist/ai-thinking/index.cjs +26 -0
  202. package/dist/ai-thinking/index.d.ts +3 -0
  203. package/dist/ai-thinking/index.mjs +5 -0
  204. package/dist/ai-thinking/src/ai-thinking.cjs +44 -0
  205. package/dist/ai-thinking/src/ai-thinking.css +543 -0
  206. package/dist/ai-thinking/src/ai-thinking.d.ts +42 -0
  207. package/dist/ai-thinking/src/ai-thinking.d.vue.ts +33 -0
  208. package/dist/ai-thinking/src/ai-thinking.mjs +38 -0
  209. package/dist/ai-thinking/src/ai-thinking.vue +631 -0
  210. package/dist/ai-thinking/src/ai-thinking.vue.d.ts +33 -0
  211. package/dist/ai-thought-chain/__tests__/ai-thought-chain.ssr.test.cjs +83 -0
  212. package/dist/ai-thought-chain/__tests__/ai-thought-chain.ssr.test.d.ts +1 -0
  213. package/dist/ai-thought-chain/__tests__/ai-thought-chain.ssr.test.mjs +52 -0
  214. package/dist/ai-thought-chain/__tests__/ai-thought-chain.test.cjs +204 -0
  215. package/dist/ai-thought-chain/__tests__/ai-thought-chain.test.d.ts +1 -0
  216. package/dist/ai-thought-chain/__tests__/ai-thought-chain.test.mjs +134 -0
  217. package/dist/ai-thought-chain/index.cjs +26 -0
  218. package/dist/ai-thought-chain/index.d.ts +3 -0
  219. package/dist/ai-thought-chain/index.mjs +5 -0
  220. package/dist/ai-thought-chain/src/ai-thought-chain.cjs +68 -0
  221. package/dist/ai-thought-chain/src/ai-thought-chain.css +668 -0
  222. package/dist/ai-thought-chain/src/ai-thought-chain.d.ts +82 -0
  223. package/dist/ai-thought-chain/src/ai-thought-chain.d.vue.ts +83 -0
  224. package/dist/ai-thought-chain/src/ai-thought-chain.mjs +62 -0
  225. package/dist/ai-thought-chain/src/ai-thought-chain.vue +813 -0
  226. package/dist/ai-thought-chain/src/ai-thought-chain.vue.d.ts +83 -0
  227. package/dist/ai-voice-trigger/__tests__/ai-voice-trigger.ssr.test.cjs +32 -0
  228. package/dist/ai-voice-trigger/__tests__/ai-voice-trigger.ssr.test.d.ts +1 -0
  229. package/dist/ai-voice-trigger/__tests__/ai-voice-trigger.ssr.test.mjs +25 -0
  230. package/dist/ai-voice-trigger/__tests__/ai-voice-trigger.test.cjs +113 -0
  231. package/dist/ai-voice-trigger/__tests__/ai-voice-trigger.test.d.ts +1 -0
  232. package/dist/ai-voice-trigger/__tests__/ai-voice-trigger.test.mjs +93 -0
  233. package/dist/ai-voice-trigger/index.cjs +26 -0
  234. package/dist/ai-voice-trigger/index.d.ts +3 -0
  235. package/dist/ai-voice-trigger/index.mjs +5 -0
  236. package/dist/ai-voice-trigger/src/ai-voice-trigger.cjs +35 -0
  237. package/dist/ai-voice-trigger/src/ai-voice-trigger.css +603 -0
  238. package/dist/ai-voice-trigger/src/ai-voice-trigger.d.ts +37 -0
  239. package/dist/ai-voice-trigger/src/ai-voice-trigger.d.vue.ts +29 -0
  240. package/dist/ai-voice-trigger/src/ai-voice-trigger.mjs +29 -0
  241. package/dist/ai-voice-trigger/src/ai-voice-trigger.vue +708 -0
  242. package/dist/ai-voice-trigger/src/ai-voice-trigger.vue.d.ts +29 -0
  243. package/dist/ai-welcome/__tests__/ai-welcome.ssr.test.cjs +57 -0
  244. package/dist/ai-welcome/__tests__/ai-welcome.ssr.test.d.ts +1 -0
  245. package/dist/ai-welcome/__tests__/ai-welcome.ssr.test.mjs +39 -0
  246. package/dist/ai-welcome/__tests__/ai-welcome.test.cjs +169 -0
  247. package/dist/ai-welcome/__tests__/ai-welcome.test.d.ts +1 -0
  248. package/dist/ai-welcome/__tests__/ai-welcome.test.mjs +113 -0
  249. package/dist/ai-welcome/index.cjs +26 -0
  250. package/dist/ai-welcome/index.d.ts +3 -0
  251. package/dist/ai-welcome/index.mjs +5 -0
  252. package/dist/ai-welcome/src/ai-welcome.cjs +56 -0
  253. package/dist/ai-welcome/src/ai-welcome.css +591 -0
  254. package/dist/ai-welcome/src/ai-welcome.d.ts +59 -0
  255. package/dist/ai-welcome/src/ai-welcome.d.vue.ts +51 -0
  256. package/dist/ai-welcome/src/ai-welcome.mjs +50 -0
  257. package/dist/ai-welcome/src/ai-welcome.vue +655 -0
  258. package/dist/ai-welcome/src/ai-welcome.vue.d.ts +51 -0
  259. package/dist/alert/src/alert.d.vue.ts +5 -5
  260. package/dist/alert/src/alert.vue.d.ts +5 -5
  261. package/dist/autocomplete/src/autocomplete.d.vue.ts +2 -2
  262. package/dist/autocomplete/src/autocomplete.vue.d.ts +2 -2
  263. package/dist/avatar/index.d.ts +39 -1
  264. package/dist/back-top/src/back-top.d.vue.ts +1 -1
  265. package/dist/back-top/src/back-top.vue.d.ts +1 -1
  266. package/dist/button/index.d.ts +3 -3
  267. package/dist/button/src/button.css +3 -3
  268. package/dist/button/src/button.d.vue.ts +1 -1
  269. package/dist/button/src/button.vue +3 -3
  270. package/dist/button/src/button.vue.d.ts +1 -1
  271. package/dist/calendar/src/calendar.d.vue.ts +2 -2
  272. package/dist/calendar/src/calendar.vue.d.ts +2 -2
  273. package/dist/cascader/src/cascader-panel.d.vue.ts +2 -2
  274. package/dist/cascader/src/cascader-panel.vue.d.ts +2 -2
  275. package/dist/checkbox/index.d.ts +3 -3
  276. package/dist/checkbox/src/checkbox-group.d.vue.ts +1 -1
  277. package/dist/checkbox/src/checkbox-group.vue +13 -1
  278. package/dist/checkbox/src/checkbox-group.vue.d.ts +1 -1
  279. package/dist/checkbox/src/checkbox.d.ts +12 -0
  280. package/dist/col/src/col.d.vue.ts +4 -4
  281. package/dist/col/src/col.vue.d.ts +4 -4
  282. package/dist/color-picker/src/color-picker.d.vue.ts +1 -1
  283. package/dist/color-picker/src/color-picker.vue.d.ts +1 -1
  284. package/dist/component.d.ts +63 -0
  285. package/dist/date-picker/src/date-picker.d.vue.ts +4 -4
  286. package/dist/date-picker/src/date-picker.vue.d.ts +4 -4
  287. package/dist/descriptions/src/description-item.d.vue.ts +1 -1
  288. package/dist/descriptions/src/description-item.vue.d.ts +1 -1
  289. package/dist/dialog/src/dialog.d.vue.ts +6 -6
  290. package/dist/dialog/src/dialog.vue.d.ts +6 -6
  291. package/dist/drawer/src/drawer.d.vue.ts +3 -3
  292. package/dist/drawer/src/drawer.vue.d.ts +3 -3
  293. package/dist/dropdown/src/dropdown-item.d.vue.ts +1 -1
  294. package/dist/dropdown/src/dropdown-item.vue.d.ts +1 -1
  295. package/dist/dropdown/src/dropdown.d.vue.ts +8 -8
  296. package/dist/dropdown/src/dropdown.vue.d.ts +8 -8
  297. package/dist/form/__tests__/form-schema.test.cjs +477 -24
  298. package/dist/form/__tests__/form-schema.test.mjs +277 -57
  299. package/dist/form/index.cjs +12 -0
  300. package/dist/form/index.d.ts +1 -2
  301. package/dist/form/index.mjs +1 -0
  302. package/dist/form/src/form-item.d.vue.ts +2 -1
  303. package/dist/form/src/form-item.vue +3 -1
  304. package/dist/form/src/form-item.vue.d.ts +2 -1
  305. package/dist/form/src/form-schema.cjs +2 -1
  306. package/dist/form/src/form-schema.d.ts +124 -19
  307. package/dist/form/src/form-schema.d.vue.ts +69 -19
  308. package/dist/form/src/form-schema.mjs +2 -1
  309. package/dist/form/src/form-schema.vue +522 -160
  310. package/dist/form/src/form-schema.vue.d.ts +69 -19
  311. package/dist/form/src/form.cjs +7 -0
  312. package/dist/form/src/form.d.ts +20 -0
  313. package/dist/form/src/form.d.vue.ts +10 -1
  314. package/dist/form/src/form.mjs +7 -0
  315. package/dist/form/src/form.vue +22 -10
  316. package/dist/form/src/form.vue.d.ts +10 -1
  317. package/dist/grid/src/grid.d.vue.ts +1 -1
  318. package/dist/grid/src/grid.vue.d.ts +1 -1
  319. package/dist/icon/src/icons/index.cjs +122 -2
  320. package/dist/icon/src/icons/index.d.ts +24 -0
  321. package/dist/icon/src/icons/index.mjs +145 -1
  322. package/dist/image/index.d.ts +356 -2
  323. package/dist/image/src/image-viewer.d.vue.ts +3 -3
  324. package/dist/image/src/image-viewer.vue.d.ts +3 -3
  325. package/dist/image/src/image.d.vue.ts +4 -4
  326. package/dist/image/src/image.vue.d.ts +4 -4
  327. package/dist/index.cjs +193 -1
  328. package/dist/index.d.ts +16 -0
  329. package/dist/index.mjs +49 -1
  330. package/dist/input/index.d.ts +18 -18
  331. package/dist/input/src/input.d.vue.ts +6 -6
  332. package/dist/input/src/input.vue.d.ts +6 -6
  333. package/dist/input-tag/src/input-tag.d.vue.ts +2 -2
  334. package/dist/input-tag/src/input-tag.vue.d.ts +2 -2
  335. package/dist/mention/src/mention.d.vue.ts +8 -8
  336. package/dist/mention/src/mention.vue.d.ts +8 -8
  337. package/dist/menu/src/menu.d.vue.ts +4 -4
  338. package/dist/menu/src/menu.vue.d.ts +4 -4
  339. package/dist/message/src/message.d.vue.ts +1 -1
  340. package/dist/message/src/message.vue.d.ts +1 -1
  341. package/dist/popconfirm/src/popconfirm.d.vue.ts +5 -5
  342. package/dist/popconfirm/src/popconfirm.vue.d.ts +5 -5
  343. package/dist/popover/src/popover.d.vue.ts +4 -4
  344. package/dist/popover/src/popover.vue.d.ts +4 -4
  345. package/dist/progress/src/progress.d.vue.ts +1 -1
  346. package/dist/progress/src/progress.vue.d.ts +1 -1
  347. package/dist/radio/src/radio-group.d.vue.ts +1 -1
  348. package/dist/radio/src/radio-group.vue +25 -4
  349. package/dist/radio/src/radio-group.vue.d.ts +1 -1
  350. package/dist/radio/src/radio.d.ts +12 -0
  351. package/dist/rate/src/rate.d.vue.ts +1 -1
  352. package/dist/rate/src/rate.vue.d.ts +1 -1
  353. package/dist/select/src/select.d.vue.ts +1 -1
  354. package/dist/select/src/select.vue.d.ts +1 -1
  355. package/dist/skeleton/src/skeleton.d.vue.ts +1 -1
  356. package/dist/skeleton/src/skeleton.vue.d.ts +1 -1
  357. package/dist/slider/src/slider.d.vue.ts +1 -1
  358. package/dist/slider/src/slider.vue.d.ts +1 -1
  359. package/dist/steps/src/step.d.vue.ts +1 -1
  360. package/dist/steps/src/step.vue.d.ts +1 -1
  361. package/dist/switch/src/switch.d.vue.ts +2 -2
  362. package/dist/switch/src/switch.vue.d.ts +2 -2
  363. package/dist/table/__tests__/table.perf.test.cjs +2 -2
  364. package/dist/table/__tests__/table.perf.test.mjs +2 -2
  365. package/dist/table/__tests__/table.test.cjs +18 -0
  366. package/dist/table/__tests__/table.test.mjs +18 -0
  367. package/dist/table/__tests__/use-table-import.test.cjs +6 -0
  368. package/dist/table/__tests__/use-table-import.test.mjs +8 -1
  369. package/dist/table/src/table-column.d.vue.ts +1 -1
  370. package/dist/table/src/table-column.vue.d.ts +1 -1
  371. package/dist/table/src/table.d.vue.ts +1 -1
  372. package/dist/table/src/table.vue.d.ts +1 -1
  373. package/dist/tabs/src/tab-pane.d.vue.ts +1 -1
  374. package/dist/tabs/src/tab-pane.vue.d.ts +1 -1
  375. package/dist/tabs/src/tabs.d.vue.ts +2 -2
  376. package/dist/tabs/src/tabs.vue.d.ts +2 -2
  377. package/dist/tooltip/index.d.ts +7 -7
  378. package/dist/tooltip/src/tooltip.d.vue.ts +7 -7
  379. package/dist/tooltip/src/tooltip.vue.d.ts +7 -7
  380. package/dist/tree/src/tree.d.vue.ts +1 -1
  381. package/dist/tree/src/tree.vue.d.ts +1 -1
  382. package/dist/tree-select/src/tree-select.d.vue.ts +3 -3
  383. package/dist/tree-select/src/tree-select.vue.d.ts +3 -3
  384. package/dist/upload/src/upload.d.vue.ts +1 -1
  385. package/dist/upload/src/upload.vue.d.ts +1 -1
  386. package/package.json +8 -5
@@ -0,0 +1,949 @@
1
+ <template>
2
+ <div :class="[ns.b(), ns.is('loading', loading)]" :style="themeStyle">
3
+ <div :class="ns.e('header')">
4
+ <!-- Create New Button -->
5
+ <button :class="ns.e('add-btn')" @click="handleCreate">
6
+ <slot name="add-icon">
7
+ <svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
8
+ <path
9
+ d="M12 5V19M5 12H19"
10
+ stroke="currentColor"
11
+ stroke-width="2"
12
+ stroke-linecap="round"
13
+ stroke-linejoin="round"
14
+ />
15
+ </svg>
16
+ </slot>
17
+ <span :class="ns.e('add-text')">
18
+ <slot name="add-text">新对话</slot>
19
+ </span>
20
+ </button>
21
+ </div>
22
+
23
+ <!-- Loading Skeleton -->
24
+ <div v-if="loading && data.length === 0" :class="ns.e('loading-placer')">
25
+ <div v-for="i in 5" :key="i" :class="ns.e('skeleton-item')">
26
+ <div :class="ns.e('skeleton-line')"></div>
27
+ <div :class="ns.e('skeleton-line')" style="width: 60%"></div>
28
+ </div>
29
+ </div>
30
+
31
+ <!-- Conversation List with groups -->
32
+ <div v-else :class="ns.e('list')">
33
+ <!-- 时间分组渲染 -->
34
+ <template v-if="groupedData.length > 0">
35
+ <template v-for="group in groupedData" :key="group.label">
36
+ <!-- 分组标题 -->
37
+ <div :class="ns.e('group-label')">
38
+ <slot name="group-label" :label="group.label">
39
+ {{ getGroupLabelText(group.label) }}
40
+ </slot>
41
+ </div>
42
+
43
+ <!-- 分组内的对话项 -->
44
+ <TransitionGroup name="yh-conversation-item" tag="div">
45
+ <div
46
+ v-for="item in group.items"
47
+ :key="item.id"
48
+ :class="[ns.e('item'), ns.is('active', activeId === item.id), ns.is('pinned', !!item.pinned)]"
49
+ @click="handleClick(item)"
50
+ >
51
+ <!-- 置顶图标 -->
52
+ <span v-if="item.pinned" :class="ns.e('pin-icon')">
53
+ <svg viewBox="0 0 24 24" width="12" height="12" fill="currentColor">
54
+ <path
55
+ d="M16 12V4h1a1 1 0 0 0 0-2H7a1 1 0 0 0 0 2h1v8l-2 2v2h5v5l1 1 1-1v-5h5v-2l-2-2z"
56
+ />
57
+ </svg>
58
+ </span>
59
+
60
+ <!-- Item Info -->
61
+ <div :class="ns.e('item-content')">
62
+ <span
63
+ v-if="!editingId || editingId !== item.id"
64
+ :class="ns.e('title')"
65
+ :title="item.title"
66
+ >
67
+ {{ item.title }}
68
+ </span>
69
+ <input
70
+ v-else
71
+ v-model="editTitle"
72
+ :class="ns.e('input')"
73
+ @blur="confirmEdit(item)"
74
+ @keydown.enter="confirmEdit(item)"
75
+ @keydown.esc="cancelEdit"
76
+ @click.stop
77
+ ref="inputRef"
78
+ />
79
+
80
+ <span v-if="item.updatedAt" :class="ns.e('time')">
81
+ {{ formatTime(item.updatedAt) }}
82
+ </span>
83
+ <span v-if="item.excerpt" :class="ns.e('excerpt')">
84
+ {{ item.excerpt }}
85
+ </span>
86
+ </div>
87
+
88
+ <!-- Actions -->
89
+ <div :class="ns.e('actions')" @click.stop v-if="!editingId || editingId !== item.id">
90
+ <!-- 置顶/取消置顶 -->
91
+ <span
92
+ :class="[ns.e('action-btn'), ns.is('active', !!item.pinned)]"
93
+ :title="item.pinned ? '\u53D6\u6D88\u7F6E\u9876' : '\u7F6E\u9876'"
94
+ @click.stop="handlePin(item)"
95
+ >
96
+ <svg
97
+ viewBox="0 0 24 24"
98
+ width="13"
99
+ height="13"
100
+ fill="none"
101
+ stroke="currentColor"
102
+ stroke-width="2"
103
+ >
104
+ <path
105
+ d="M16 12V4h1a1 1 0 0 0 0-2H7a1 1 0 0 0 0 2h1v8l-2 2v2h5v5l1 1 1-1v-5h5v-2l-2-2z"
106
+ />
107
+ </svg>
108
+ </span>
109
+ <!-- Edit Icon -->
110
+ <span :class="ns.e('action-btn')" @click.stop="startEdit(item)">
111
+ <slot name="edit-icon">
112
+ <svg
113
+ viewBox="0 0 24 24"
114
+ fill="none"
115
+ stroke="currentColor"
116
+ stroke-width="2"
117
+ stroke-linecap="round"
118
+ stroke-linejoin="round"
119
+ >
120
+ <path d="M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"></path>
121
+ <path d="M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"></path>
122
+ </svg>
123
+ </slot>
124
+ </span>
125
+ <!-- Delete Icon -->
126
+ <span :class="ns.e('action-btn')" @click.stop="handleDelete(item)">
127
+ <slot name="delete-icon">
128
+ <svg
129
+ viewBox="0 0 24 24"
130
+ fill="none"
131
+ stroke="currentColor"
132
+ stroke-width="2"
133
+ stroke-linecap="round"
134
+ stroke-linejoin="round"
135
+ >
136
+ <polyline points="3 6 5 6 21 6"></polyline>
137
+ <path
138
+ d="M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"
139
+ ></path>
140
+ <line x1="10" y1="11" x2="10" y2="17"></line>
141
+ <line x1="14" y1="11" x2="14" y2="17"></line>
142
+ </svg>
143
+ </slot>
144
+ </span>
145
+ </div>
146
+ </div>
147
+ </TransitionGroup>
148
+ </template>
149
+ </template>
150
+
151
+ <!-- Flat 模式(未分组)-->
152
+ <template v-else-if="data.length > 0 && !showGroups">
153
+ <div
154
+ v-for="item in data"
155
+ :key="item.id"
156
+ :class="[ns.e('item'), ns.is('active', activeId === item.id)]"
157
+ @click="handleClick(item)"
158
+ >
159
+ <div :class="ns.e('item-content')">
160
+ <span :class="ns.e('title')" :title="item.title">{{ item.title }}</span>
161
+ </div>
162
+ </div>
163
+ </template>
164
+
165
+ <!-- Empty State -->
166
+ <div v-if="!loading && data.length === 0" :class="ns.e('empty')">
167
+ <slot name="empty">暂无对话记录</slot>
168
+ </div>
169
+ </div>
170
+ </div>
171
+ </template>
172
+
173
+ <script setup>
174
+ import { ref, computed, nextTick } from "vue";
175
+ import { useNamespace, useLocale } from "@yh-ui/hooks";
176
+ import { useComponentTheme } from "@yh-ui/theme";
177
+ import { aiConversationsProps, aiConversationsEmits } from "./ai-conversations";
178
+ defineOptions({
179
+ name: "YhAiConversations"
180
+ });
181
+ const props = defineProps(aiConversationsProps);
182
+ const emit = defineEmits(aiConversationsEmits);
183
+ const ns = useNamespace("ai-conversations");
184
+ const { t } = useLocale();
185
+ const { themeStyle } = useComponentTheme("ai-conversations", props.themeOverrides);
186
+ const editingId = ref(null);
187
+ const editTitle = ref("");
188
+ const inputRef = ref();
189
+ const showGroups = computed(() => props.grouped !== false);
190
+ const GROUP_LABEL_MAP = {
191
+ pinned: "\u5DF2\u7F6E\u9876",
192
+ today: "\u4ECA\u5929",
193
+ last7Days: "\u6700\u8FD1 7 \u5929",
194
+ last30Days: "\u6700\u8FD1 30 \u5929",
195
+ earlier: "\u66F4\u65E9"
196
+ };
197
+ const GROUP_LABEL_MAP_EN = {
198
+ pinned: "Pinned",
199
+ today: "Today",
200
+ last7Days: "Last 7 Days",
201
+ last30Days: "Last 30 Days",
202
+ earlier: "Earlier"
203
+ };
204
+ const getGroupLabelText = (label) => {
205
+ const locale = t("locale") || "zh-CN";
206
+ const map = locale.startsWith("zh") ? GROUP_LABEL_MAP : GROUP_LABEL_MAP_EN;
207
+ return map[label] ?? label;
208
+ };
209
+ const getGroupKey = (item) => {
210
+ if (item.pinned) return "pinned";
211
+ const diff = Date.now() - item.updatedAt;
212
+ const oneDay = 864e5;
213
+ if (diff < oneDay) return "today";
214
+ if (diff < 7 * oneDay) return "last7Days";
215
+ if (diff < 30 * oneDay) return "last30Days";
216
+ return "earlier";
217
+ };
218
+ const groupedData = computed(() => {
219
+ if (!showGroups.value) return [];
220
+ const groups = {
221
+ pinned: [],
222
+ today: [],
223
+ last7Days: [],
224
+ last30Days: [],
225
+ earlier: []
226
+ };
227
+ for (const item of props.data) {
228
+ groups[getGroupKey(item)].push(item);
229
+ }
230
+ const order = ["pinned", "today", "last7Days", "last30Days", "earlier"];
231
+ return order.filter((k) => groups[k].length > 0).map((k) => ({ label: k, items: groups[k] }));
232
+ });
233
+ const handleCreate = () => emit("create");
234
+ const handleClick = (item) => {
235
+ if (editingId.value === item.id) return;
236
+ emit("update:activeId", item.id);
237
+ emit("click", item);
238
+ };
239
+ const handleDelete = (item) => emit("delete", item);
240
+ const handlePin = (item) => emit("pin", item, !item.pinned);
241
+ const startEdit = (item) => {
242
+ editingId.value = item.id;
243
+ editTitle.value = item.title;
244
+ nextTick(() => {
245
+ if (inputRef.value?.[0]) inputRef.value[0].focus();
246
+ });
247
+ };
248
+ const confirmEdit = (item) => {
249
+ if (!editingId.value) return;
250
+ const title = editTitle.value.trim();
251
+ if (title && title !== item.title) emit("edit", item, title);
252
+ editingId.value = null;
253
+ };
254
+ const cancelEdit = () => {
255
+ editingId.value = null;
256
+ };
257
+ const formatTime = (ts) => {
258
+ const d = new Date(ts);
259
+ const now = /* @__PURE__ */ new Date();
260
+ const isToday = d.toDateString() === now.toDateString();
261
+ const pad = (n) => n.toString().padStart(2, "0");
262
+ if (isToday) {
263
+ return `${pad(d.getHours())}:${pad(d.getMinutes())}`;
264
+ }
265
+ return `${d.getMonth() + 1}/${d.getDate()}`;
266
+ };
267
+ </script>
268
+
269
+ <style>
270
+ @charset "UTF-8";
271
+ /**
272
+ * YH-UI CSS Variables
273
+ * 全局 CSS 变量定义 - 业内最佳主题系统
274
+ */
275
+ :root {
276
+ /* ==================== 密度/紧凑度系统 ==================== */
277
+ --yh-density-factor: 1;
278
+ --yh-component-size-default: 32px;
279
+ --yh-component-size-small: 24px;
280
+ --yh-component-size-large: 40px;
281
+ --yh-padding-default: 12px 16px;
282
+ --yh-padding-small: 8px 12px;
283
+ --yh-padding-large: 16px 20px;
284
+ --yh-spacing-unit: 8px;
285
+ /* ==================== 基础颜色 ==================== */
286
+ --yh-color-white: #ffffff;
287
+ --yh-color-black: #000000;
288
+ /* ==================== 颜色系统 ==================== */
289
+ /* 主色 */
290
+ --yh-color-primary: #409eff;
291
+ --yh-color-primary-light-1: #53a8ff;
292
+ --yh-color-primary-light-2: #66b1ff;
293
+ --yh-color-primary-light-3: #79bbff;
294
+ --yh-color-primary-light-4: #8cc5ff;
295
+ --yh-color-primary-light-5: #a0cfff;
296
+ --yh-color-primary-light-6: #b3d8ff;
297
+ --yh-color-primary-light-7: #c6e2ff;
298
+ --yh-color-primary-light-8: #d9ecff;
299
+ --yh-color-primary-light-9: #ecf5ff;
300
+ --yh-color-primary-dark-2: #337ecc;
301
+ /* 成功色 */
302
+ --yh-color-success: #67c23a;
303
+ --yh-color-success-light-3: #95d475;
304
+ --yh-color-success-light-5: #b3e19d;
305
+ --yh-color-success-light-7: #d1edc4;
306
+ --yh-color-success-light-9: #f0f9eb;
307
+ --yh-color-success-dark-2: #529b2e;
308
+ /* 警告色 */
309
+ --yh-color-warning: #e6a23c;
310
+ --yh-color-warning-light-3: #eebe77;
311
+ --yh-color-warning-light-5: #f3d19e;
312
+ --yh-color-warning-light-7: #f8e3c5;
313
+ --yh-color-warning-light-9: #fdf6ec;
314
+ --yh-color-warning-dark-2: #b88230;
315
+ /* 危险色 */
316
+ --yh-color-danger: #f56c6c;
317
+ --yh-color-danger-light-3: #f89898;
318
+ --yh-color-danger-light-5: #fab6b6;
319
+ --yh-color-danger-light-7: #fcd3d3;
320
+ --yh-color-danger-light-9: #fef0f0;
321
+ --yh-color-danger-dark-2: #c45656;
322
+ /* 信息色 */
323
+ --yh-color-info: #909399;
324
+ --yh-color-info-light-3: #b1b3b8;
325
+ --yh-color-info-light-5: #c8c9cc;
326
+ --yh-color-info-light-7: #dedfe0;
327
+ --yh-color-info-light-9: #f4f4f5;
328
+ --yh-color-info-dark-2: #73767a;
329
+ /* 文字颜色 */
330
+ --yh-text-color-primary: #303133;
331
+ --yh-text-color-regular: #606266;
332
+ --yh-text-color-secondary: #909399;
333
+ --yh-text-color-placeholder: #a8abb2;
334
+ --yh-text-color-disabled: #c0c4cc;
335
+ /* 边框颜色 */
336
+ --yh-border-color: #dcdfe6;
337
+ --yh-border-color-hover: var(--yh-color-primary);
338
+ --yh-border-color-light: #e4e7ed;
339
+ --yh-border-color-lighter: #ebeef5;
340
+ --yh-border-color-extra-light: #f2f6fc;
341
+ --yh-border-color-dark: #d4d7de;
342
+ --yh-border-color-darker: #cdd0d6;
343
+ /* 填充颜色 */
344
+ --yh-fill-color: #f0f2f5;
345
+ --yh-fill-color-light: #f5f7fa;
346
+ --yh-fill-color-lighter: #fafafa;
347
+ --yh-fill-color-extra-light: #fafcff;
348
+ --yh-fill-color-dark: #ebedf0;
349
+ --yh-fill-color-darker: #e6e8eb;
350
+ --yh-fill-color-blank: #ffffff;
351
+ /* 背景颜色 */
352
+ --yh-bg-color: #ffffff;
353
+ --yh-bg-color-page: #f2f3f5;
354
+ --yh-bg-color-overlay: #ffffff;
355
+ /* ==================== 间距系统 ==================== */
356
+ --yh-spacing-none: 0;
357
+ --yh-spacing-xs: 4px;
358
+ --yh-spacing-sm: 8px;
359
+ --yh-spacing-md: 16px;
360
+ --yh-spacing-lg: 24px;
361
+ --yh-spacing-xl: 32px;
362
+ --yh-spacing-xxl: 48px;
363
+ /* ==================== 圆角系统 ==================== */
364
+ --yh-radius-none: 0;
365
+ --yh-radius-sm: 2px;
366
+ --yh-radius-base: 4px;
367
+ --yh-radius-md: 8px;
368
+ --yh-radius-lg: 12px;
369
+ --yh-radius-xl: 16px;
370
+ --yh-radius-round: 20px;
371
+ --yh-radius-circle: 50%;
372
+ /* ==================== 字体系统 ==================== */
373
+ --yh-font-family:
374
+ -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans',
375
+ sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
376
+ /* 字号 */
377
+ --yh-font-size-xs: 12px;
378
+ --yh-font-size-sm: 13px;
379
+ --yh-font-size-base: 14px;
380
+ --yh-font-size-md: 16px;
381
+ --yh-font-size-lg: 18px;
382
+ --yh-font-size-xl: 20px;
383
+ --yh-font-size-xxl: 24px;
384
+ /* 行高 */
385
+ --yh-line-height-none: 1;
386
+ --yh-line-height-tight: 1.25;
387
+ --yh-line-height-snug: 1.375;
388
+ --yh-line-height-normal: 1.5;
389
+ --yh-line-height-relaxed: 1.625;
390
+ --yh-line-height-loose: 2;
391
+ /* 字重 */
392
+ --yh-font-weight-light: 300;
393
+ --yh-font-weight-normal: 400;
394
+ --yh-font-weight-medium: 500;
395
+ --yh-font-weight-semibold: 600;
396
+ --yh-font-weight-bold: 700;
397
+ /* ==================== 阴影系统 ==================== */
398
+ --yh-shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
399
+ --yh-shadow-base: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1);
400
+ --yh-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1);
401
+ --yh-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1);
402
+ --yh-shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1);
403
+ /* ==================== 过渡动效 ==================== */
404
+ --yh-duration-fast: 150ms;
405
+ --yh-duration-base: 200ms;
406
+ --yh-duration-slow: 300ms;
407
+ --yh-timing-ease: ease;
408
+ --yh-timing-ease-in: cubic-bezier(0.4, 0, 1, 1);
409
+ --yh-timing-ease-out: cubic-bezier(0, 0, 0.2, 1);
410
+ --yh-timing-ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
411
+ --yh-timing-linear: linear;
412
+ --yh-transition-base: all var(--yh-duration-base) var(--yh-timing-ease-in-out);
413
+ --yh-transition-fast: all var(--yh-duration-fast) var(--yh-timing-ease-in-out);
414
+ --yh-transition-slow: all var(--yh-duration-slow) var(--yh-timing-ease-in-out);
415
+ /* ==================== 层级系统 ==================== */
416
+ --yh-z-index-normal: 1;
417
+ --yh-z-index-top: 1000;
418
+ --yh-z-index-popper: 2000;
419
+ --yh-z-index-overlay: 2001;
420
+ --yh-z-index-modal: 2002;
421
+ --yh-z-index-popover: 2003;
422
+ --yh-z-index-tooltip: 2004;
423
+ --yh-z-index-loading: 2005;
424
+ /* ==================== 组件尺寸 ==================== */
425
+ /* Large */
426
+ --yh-component-size-large: 40px;
427
+ --yh-component-size-large-font: 14px;
428
+ --yh-component-size-large-padding: 20px;
429
+ /* Default */
430
+ --yh-component-size-default: 32px;
431
+ --yh-component-size-default-font: 14px;
432
+ --yh-component-size-default-padding: 16px;
433
+ /* Small */
434
+ --yh-component-size-small: 24px;
435
+ --yh-component-size-small-font: 12px;
436
+ --yh-component-size-small-padding: 12px;
437
+ /* ==================== 组件语义化变量 ==================== */
438
+ --yh-border-radius-base: var(--yh-radius-base);
439
+ --yh-border-radius-small: var(--yh-radius-sm);
440
+ --yh-border-radius-round: var(--yh-radius-round);
441
+ /* Message 消息提示 */
442
+ --yh-message-bg-color: var(--yh-bg-color-overlay);
443
+ --yh-message-border-color: var(--yh-border-color-lighter);
444
+ --yh-message-shadow: var(--yh-shadow-lg);
445
+ --yh-message-text-color: var(--yh-text-color-primary);
446
+ --yh-message-close-color: var(--yh-text-color-secondary);
447
+ --yh-message-close-hover-color: var(--yh-text-color-primary);
448
+ /* Notification 通知 */
449
+ --yh-notification-bg-color: var(--yh-bg-color-overlay);
450
+ --yh-notification-border-color: var(--yh-border-color-lighter);
451
+ --yh-notification-shadow: var(--yh-shadow-lg);
452
+ --yh-notification-title-color: var(--yh-text-color-primary);
453
+ --yh-notification-content-color: var(--yh-text-color-regular);
454
+ /* Badge 徽标 */
455
+ --yh-badge-bg-color: var(--yh-color-danger);
456
+ --yh-badge-text-color: #ffffff;
457
+ --yh-badge-border-color: var(--yh-bg-color);
458
+ /* Card 卡片 */
459
+ --yh-card-bg-color: var(--yh-bg-color-overlay);
460
+ --yh-card-border-color: var(--yh-border-color-lighter);
461
+ --yh-card-shadow: var(--yh-shadow-base);
462
+ --yh-card-header-padding: 18px 20px;
463
+ --yh-card-body-padding: 20px;
464
+ /* Input 输入框 */
465
+ --yh-input-bg-color: var(--yh-fill-color-blank);
466
+ --yh-input-text-color: var(--yh-text-color-regular);
467
+ --yh-input-border-color: var(--yh-border-color);
468
+ --yh-input-hover-border-color: var(--yh-color-primary);
469
+ --yh-input-focus-border-color: var(--yh-color-primary);
470
+ --yh-input-placeholder-color: var(--yh-text-color-placeholder);
471
+ --yh-input-icon-color: var(--yh-text-color-placeholder);
472
+ --yh-input-disabled-bg-color: var(--yh-fill-color-light);
473
+ --yh-input-disabled-text-color: var(--yh-text-color-disabled);
474
+ --yh-input-disabled-border-color: var(--yh-border-color-light);
475
+ /* Image 图片 */
476
+ --yh-image-placeholder-bg-color: var(--yh-fill-color-light);
477
+ --yh-image-placeholder-text-color: var(--yh-text-color-placeholder);
478
+ --yh-image-error-bg-color: var(--yh-fill-color-extra-light);
479
+ --yh-image-error-text-color: var(--yh-text-color-placeholder);
480
+ /* Image Viewer 预览器 */
481
+ --yh-image-viewer-mask-bg-color: rgba(0, 0, 0, 0.5);
482
+ --yh-image-viewer-btn-bg-color: var(--yh-text-color-regular);
483
+ --yh-image-viewer-btn-color: #ffffff;
484
+ --yh-image-viewer-btn-hover-bg-color: var(--yh-color-primary);
485
+ /* Calendar 日历 */
486
+ --yh-calendar-bg: linear-gradient(135deg, #ffffff 0%, #f8fafc 100%);
487
+ --yh-calendar-border-color: rgba(0, 0, 0, 0.06);
488
+ --yh-calendar-border-radius: var(--yh-radius-xl);
489
+ --yh-calendar-header-bg: rgba(255, 255, 255, 0.95);
490
+ --yh-calendar-header-border: rgba(0, 0, 0, 0.04);
491
+ --yh-calendar-header-padding: 18px 22px;
492
+ --yh-calendar-body-padding: 14px 18px 18px;
493
+ /* Calendar 尺寸 */
494
+ --yh-calendar-cell-height: 85px;
495
+ --yh-calendar-cell-height-small: 52px;
496
+ --yh-calendar-cell-height-large: 110px;
497
+ --yh-calendar-cell-radius: 10px;
498
+ --yh-calendar-cell-radius-small: 6px;
499
+ --yh-calendar-cell-radius-large: 12px;
500
+ /* Calendar 颜色 */
501
+ --yh-calendar-primary: var(--yh-color-primary);
502
+ --yh-calendar-primary-light: rgba(59, 130, 246, 0.1);
503
+ --yh-calendar-selected-bg: linear-gradient(135deg, #eff6ff 0%, #dbeafe 100%);
504
+ --yh-calendar-selected-border: rgba(59, 130, 246, 0.4);
505
+ --yh-calendar-today-dot: var(--yh-color-primary);
506
+ --yh-calendar-weekend-color: #f97316;
507
+ --yh-calendar-disabled-color: var(--yh-text-color-disabled);
508
+ --yh-calendar-other-month-opacity: 0.35;
509
+ /* Calendar 假日 */
510
+ --yh-calendar-holiday-color: var(--yh-color-success);
511
+ --yh-calendar-holiday-bg: rgba(16, 185, 129, 0.12);
512
+ --yh-calendar-holiday-border: rgba(16, 185, 129, 0.25);
513
+ --yh-calendar-workday-color: var(--yh-color-warning);
514
+ --yh-calendar-workday-bg: rgba(245, 158, 11, 0.12);
515
+ --yh-calendar-workday-border: rgba(245, 158, 11, 0.25);
516
+ /* Calendar 范围选择 */
517
+ --yh-calendar-range-bg: rgba(59, 130, 246, 0.08);
518
+ --yh-calendar-range-border: rgba(59, 130, 246, 0.2);
519
+ /* Calendar 字体 */
520
+ --yh-calendar-weekday-font-size: var(--yh-font-size-sm);
521
+ --yh-calendar-weekday-color: var(--yh-text-color-secondary);
522
+ --yh-calendar-day-font-size: 15px;
523
+ --yh-calendar-day-color: var(--yh-text-color-primary);
524
+ --yh-calendar-badge-font-size: 9px;
525
+ /* Table 表格 */
526
+ --yh-table-border-color: var(--yh-border-color-lighter);
527
+ --yh-table-header-bg: var(--yh-fill-color-light);
528
+ --yh-table-header-text-color: var(--yh-text-color-primary);
529
+ --yh-table-header-font-weight: var(--yh-font-weight-semibold);
530
+ --yh-table-row-bg: var(--yh-bg-color);
531
+ --yh-table-row-hover-bg: var(--yh-fill-color-light);
532
+ --yh-table-row-stripe-bg: var(--yh-fill-color-lighter);
533
+ --yh-table-row-current-bg: var(--yh-color-primary-light-9);
534
+ --yh-table-row-selected-bg: var(--yh-color-primary-light-8);
535
+ --yh-table-row-success-bg: var(--yh-color-success-light-9);
536
+ --yh-table-row-warning-bg: var(--yh-color-warning-light-9);
537
+ --yh-table-text-color: var(--yh-text-color-regular);
538
+ --yh-table-empty-text-color: var(--yh-text-color-secondary);
539
+ --yh-table-font-size: var(--yh-font-size-base);
540
+ --yh-table-cell-padding: 12px 0;
541
+ --yh-table-cell-spacing: 12px;
542
+ --yh-table-fixed-left-shadow: inset 10px 0 8px -8px rgba(0, 0, 0, 0.15);
543
+ --yh-table-fixed-right-shadow: inset -10px 0 8px -8px rgba(0, 0, 0, 0.15);
544
+ /* ==================== 边框基础 ==================== */
545
+ --yh-border-width: 1px;
546
+ --yh-border-style: solid;
547
+ --yh-border: var(--yh-border-width) var(--yh-border-style) var(--yh-border-color);
548
+ /* ==================== 断点系统 ==================== */
549
+ --yh-breakpoint-xs: 0;
550
+ --yh-breakpoint-sm: 576px;
551
+ --yh-breakpoint-md: 768px;
552
+ --yh-breakpoint-lg: 992px;
553
+ --yh-breakpoint-xl: 1200px;
554
+ --yh-breakpoint-xxl: 1400px;
555
+ /* ==================== 字体系统扩展 ==================== */
556
+ --yh-font-family-monospace:
557
+ 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier, monospace;
558
+ --yh-font-family-serif: Georgia, Cambria, 'Times New Roman', Times, serif;
559
+ /* ==================== 无障碍/聚焦系统 ==================== */
560
+ --yh-focus-ring-color: var(--yh-color-primary);
561
+ --yh-focus-ring-width: 2px;
562
+ --yh-focus-ring-offset: 2px;
563
+ --yh-focus-ring-opacity: 0.2;
564
+ --yh-focus-ring:
565
+ 0 0 0 var(--yh-focus-ring-offset) var(--yh-bg-color),
566
+ 0 0 0 calc(var(--yh-focus-ring-offset) + var(--yh-focus-ring-width)) var(--yh-focus-ring-color);
567
+ /* 高对比度模式支持 */
568
+ --yh-high-contrast-outline: 2px solid transparent;
569
+ --yh-high-contrast-outline-offset: 2px;
570
+ /* ==================== 滚动条样式 ==================== */
571
+ --yh-scrollbar-width: 6px;
572
+ --yh-scrollbar-thumb-color: var(--yh-text-color-disabled);
573
+ --yh-scrollbar-thumb-hover-color: var(--yh-text-color-secondary);
574
+ --yh-scrollbar-track-color: transparent;
575
+ --yh-scrollbar-thumb-radius: 3px;
576
+ /* ==================== 遮罩层 ==================== */
577
+ --yh-mask-color: rgba(0, 0, 0, 0.5);
578
+ --yh-mask-color-light: rgba(0, 0, 0, 0.3);
579
+ --yh-mask-color-extra-light: rgba(0, 0, 0, 0.1);
580
+ }
581
+
582
+ /* ==================== 暗黑模式 ==================== */
583
+ html.dark {
584
+ --yh-color-primary: #409eff;
585
+ --yh-color-primary-light-3: #3375b9;
586
+ --yh-color-primary-light-5: #2a598a;
587
+ --yh-color-primary-light-7: #213d5b;
588
+ --yh-color-primary-light-9: #18222c;
589
+ --yh-color-primary-dark-2: #66b1ff;
590
+ --yh-color-success: #67c23a;
591
+ --yh-color-success-light-3: #4e8e2f;
592
+ --yh-color-success-light-5: #3e6b27;
593
+ --yh-color-success-light-7: #2d481f;
594
+ --yh-color-success-light-9: #1d2518;
595
+ --yh-color-warning: #e6a23c;
596
+ --yh-color-warning-light-3: #a77730;
597
+ --yh-color-warning-light-5: #7d5b28;
598
+ --yh-color-warning-light-7: #533f20;
599
+ --yh-color-warning-light-9: #292218;
600
+ --yh-color-danger: #f56c6c;
601
+ --yh-color-danger-light-3: #b25252;
602
+ --yh-color-danger-light-5: #854040;
603
+ --yh-color-danger-light-7: #582e2e;
604
+ --yh-color-danger-light-9: #2b1d1d;
605
+ --yh-color-info: #909399;
606
+ --yh-color-info-light-3: #6b6d71;
607
+ --yh-color-info-light-5: #525457;
608
+ --yh-color-info-light-7: #393b3e;
609
+ --yh-color-info-light-9: #202124;
610
+ --yh-text-color-primary: #e5eaf3;
611
+ --yh-text-color-regular: #cfd3dc;
612
+ --yh-text-color-secondary: #a3a6ad;
613
+ --yh-text-color-placeholder: #8d9095;
614
+ --yh-text-color-disabled: #6c6e72;
615
+ --yh-border-color: #4c4d4f;
616
+ --yh-border-color-light: #414243;
617
+ --yh-border-color-lighter: #363637;
618
+ --yh-border-color-extra-light: #2b2b2c;
619
+ --yh-border-color-dark: #58585b;
620
+ --yh-border-color-darker: #636466;
621
+ --yh-fill-color: #303030;
622
+ --yh-fill-color-light: #262727;
623
+ --yh-fill-color-lighter: #1d1d1d;
624
+ --yh-fill-color-extra-light: #191919;
625
+ --yh-fill-color-dark: #39393a;
626
+ --yh-fill-color-darker: #424243;
627
+ --yh-fill-color-blank: transparent;
628
+ --yh-bg-color: #141414;
629
+ --yh-bg-color-page: #0a0a0a;
630
+ --yh-bg-color-overlay: #1d1e1f;
631
+ /* 组件暗色模式覆盖 */
632
+ --yh-message-bg-color: var(--yh-bg-color-overlay);
633
+ --yh-message-border-color: var(--yh-border-color-lighter);
634
+ --yh-notification-bg-color: var(--yh-bg-color-overlay);
635
+ --yh-notification-border-color: var(--yh-border-color-lighter);
636
+ --yh-badge-border-color: var(--yh-bg-color);
637
+ --yh-card-bg-color: var(--yh-bg-color-overlay);
638
+ --yh-card-border-color: var(--yh-border-color-lighter);
639
+ /* Calendar 暗黑模式 */
640
+ --yh-calendar-bg: linear-gradient(135deg, #1a1a2e 0%, #16213e 100%);
641
+ --yh-calendar-border-color: rgba(255, 255, 255, 0.08);
642
+ --yh-calendar-header-bg: rgba(30, 30, 30, 0.95);
643
+ --yh-calendar-header-border: rgba(255, 255, 255, 0.06);
644
+ --yh-calendar-day-color: var(--yh-text-color-primary);
645
+ --yh-calendar-weekday-color: var(--yh-text-color-secondary);
646
+ --yh-calendar-selected-bg: linear-gradient(
647
+ 135deg,
648
+ rgba(59, 130, 246, 0.2) 0%,
649
+ rgba(59, 130, 246, 0.1) 100%
650
+ );
651
+ /* Table 暗黑模式 */
652
+ --yh-table-border-color: var(--yh-border-color-lighter);
653
+ --yh-table-header-bg: var(--yh-fill-color-dark);
654
+ --yh-table-header-text-color: var(--yh-text-color-primary);
655
+ --yh-table-row-bg: var(--yh-bg-color);
656
+ --yh-table-row-hover-bg: var(--yh-fill-color);
657
+ --yh-table-row-stripe-bg: var(--yh-fill-color-light);
658
+ --yh-table-row-current-bg: var(--yh-color-primary-light-9);
659
+ --yh-table-row-selected-bg: var(--yh-color-primary-light-9);
660
+ --yh-table-row-success-bg: var(--yh-color-success-light-9);
661
+ --yh-table-row-warning-bg: var(--yh-color-warning-light-9);
662
+ --yh-table-fixed-left-shadow: inset 10px 0 8px -8px rgba(0, 0, 0, 0.3);
663
+ --yh-table-fixed-right-shadow: inset -10px 0 8px -8px rgba(0, 0, 0, 0.3);
664
+ /* 遮罩层暗黑模式 */
665
+ --yh-mask-color: rgba(0, 0, 0, 0.7);
666
+ --yh-mask-color-light: rgba(0, 0, 0, 0.5);
667
+ --yh-mask-color-extra-light: rgba(0, 0, 0, 0.3);
668
+ /* 滚动条暗黑模式 */
669
+ --yh-scrollbar-thumb-color: var(--yh-fill-color-darker);
670
+ --yh-scrollbar-thumb-hover-color: var(--yh-text-color-placeholder);
671
+ }
672
+
673
+ /* ==================== 减少动画偏好支持 ==================== */
674
+ @media (prefers-reduced-motion: reduce) {
675
+ :root,
676
+ html.dark {
677
+ --yh-duration-fast: 0ms;
678
+ --yh-duration-base: 0ms;
679
+ --yh-duration-slow: 0ms;
680
+ --yh-transition-base: none;
681
+ --yh-transition-fast: none;
682
+ --yh-transition-slow: none;
683
+ }
684
+ *,
685
+ *::before,
686
+ *::after {
687
+ animation-duration: 0.01ms !important;
688
+ animation-iteration-count: 1 !important;
689
+ transition-duration: 0.01ms !important;
690
+ scroll-behavior: auto !important;
691
+ }
692
+ }
693
+ /* ==================== 高对比度模式支持 ==================== */
694
+ @media (prefers-contrast: high) {
695
+ :root {
696
+ --yh-border-color: #000000;
697
+ --yh-border-color-light: #333333;
698
+ --yh-text-color-primary: #000000;
699
+ --yh-text-color-regular: #1a1a1a;
700
+ --yh-focus-ring-width: 3px;
701
+ --yh-focus-ring-color: #000000;
702
+ }
703
+ html.dark {
704
+ --yh-border-color: #ffffff;
705
+ --yh-border-color-light: #cccccc;
706
+ --yh-text-color-primary: #ffffff;
707
+ --yh-text-color-regular: #e5e5e5;
708
+ --yh-focus-ring-color: #ffffff;
709
+ }
710
+ }
711
+ /* ==================== 强制颜色模式支持 (Windows 高对比度) ==================== */
712
+ @media (forced-colors: active) {
713
+ :root {
714
+ --yh-color-primary: LinkText;
715
+ --yh-border-color: ButtonBorder;
716
+ --yh-bg-color: Canvas;
717
+ --yh-text-color-primary: CanvasText;
718
+ --yh-focus-ring-color: Highlight;
719
+ }
720
+ }
721
+ .yh-ai-conversations {
722
+ display: flex;
723
+ flex-direction: column;
724
+ width: 100%;
725
+ height: 100%;
726
+ border-right: 1px solid var(--yh-ai-conversations-border-color, var(--yh-border-color));
727
+ background-color: var(--yh-ai-conversations-bg-color, var(--yh-bg-color));
728
+ }
729
+ .yh-ai-conversations__header {
730
+ padding: var(--yh-ai-conversations-header-padding, 16px);
731
+ border-bottom: 1px solid var(--yh-ai-conversations-border-color, var(--yh-border-color));
732
+ }
733
+
734
+ .yh-ai-conversations__add-btn {
735
+ display: flex;
736
+ align-items: center;
737
+ justify-content: center;
738
+ width: 100%;
739
+ padding: 8px 16px;
740
+ background-color: var(--yh-bg-color);
741
+ border: 1px solid var(--yh-border-color);
742
+ border-radius: var(--yh-border-radius-base);
743
+ color: var(--yh-text-color-primary);
744
+ cursor: pointer;
745
+ transition: all var(--yh-transition-duration);
746
+ gap: 8px;
747
+ }
748
+ .yh-ai-conversations__add-btn:hover {
749
+ border-color: var(--yh-color-primary);
750
+ color: var(--yh-color-primary);
751
+ background-color: var(--yh-color-primary-light-9);
752
+ }
753
+ .yh-ai-conversations__add-btn svg {
754
+ width: 16px;
755
+ height: 16px;
756
+ }
757
+
758
+ .yh-ai-conversations__list {
759
+ flex: 1;
760
+ overflow-y: auto;
761
+ padding: 12px;
762
+ display: flex;
763
+ flex-direction: column;
764
+ gap: 4px;
765
+ }
766
+ .yh-ai-conversations__list::-webkit-scrollbar {
767
+ width: 4px;
768
+ }
769
+ .yh-ai-conversations__list::-webkit-scrollbar-thumb {
770
+ border-radius: 4px;
771
+ background: var(--yh-border-color-light);
772
+ }
773
+
774
+ .yh-ai-conversations__loading-placer {
775
+ display: flex;
776
+ justify-content: center;
777
+ padding: 24px 0;
778
+ }
779
+
780
+ .yh-ai-conversations__item {
781
+ display: flex;
782
+ align-items: center;
783
+ justify-content: space-between;
784
+ padding: var(--yh-ai-conversations-item-padding, 12px 16px);
785
+ border-radius: var(--yh-border-radius-base);
786
+ cursor: pointer;
787
+ transition: background-color var(--yh-transition-duration);
788
+ background-color: transparent;
789
+ }
790
+ .yh-ai-conversations__item:hover {
791
+ background-color: var(--yh-ai-conversations-hover-bg-color, var(--yh-bg-color-page));
792
+ }
793
+ .yh-ai-conversations__item:hover .yh-ai-conversations__actions {
794
+ opacity: 1;
795
+ visibility: visible;
796
+ }
797
+ .yh-ai-conversations__item.is-active {
798
+ background-color: var(--yh-ai-conversations-active-bg-color, var(--yh-color-primary-light-9));
799
+ }
800
+ .yh-ai-conversations__item.is-active .yh-ai-conversations__title {
801
+ color: var(--yh-ai-conversations-active-text-color, var(--yh-color-primary));
802
+ font-weight: 500;
803
+ }
804
+
805
+ .yh-ai-conversations__item-content {
806
+ display: flex;
807
+ flex-direction: column;
808
+ flex: 1;
809
+ min-width: 0;
810
+ gap: 4px;
811
+ }
812
+
813
+ .yh-ai-conversations__title {
814
+ font-size: var(--yh-ai-conversations-title-font-size, 14px);
815
+ color: var(--yh-text-color-primary);
816
+ white-space: nowrap;
817
+ overflow: hidden;
818
+ text-overflow: ellipsis;
819
+ transition: color var(--yh-transition-duration);
820
+ }
821
+
822
+ .yh-ai-conversations__input {
823
+ width: 100%;
824
+ font-size: 14px;
825
+ border: 1px solid var(--yh-color-primary);
826
+ border-radius: 4px;
827
+ padding: 2px 6px;
828
+ outline: none;
829
+ background: var(--yh-bg-color);
830
+ color: var(--yh-text-color-primary);
831
+ }
832
+
833
+ .yh-ai-conversations__time {
834
+ font-size: var(--yh-ai-conversations-time-font-size, 12px);
835
+ color: var(--yh-text-color-secondary);
836
+ }
837
+
838
+ .yh-ai-conversations__excerpt {
839
+ font-size: 12px;
840
+ color: var(--yh-text-color-regular);
841
+ white-space: nowrap;
842
+ overflow: hidden;
843
+ text-overflow: ellipsis;
844
+ }
845
+
846
+ .yh-ai-conversations__actions {
847
+ display: flex;
848
+ align-items: center;
849
+ gap: 8px;
850
+ opacity: 0;
851
+ visibility: hidden;
852
+ transition: all var(--yh-transition-duration);
853
+ }
854
+
855
+ .yh-ai-conversations__action-btn {
856
+ display: flex;
857
+ align-items: center;
858
+ justify-content: center;
859
+ padding: 4px;
860
+ color: var(--yh-text-color-secondary);
861
+ border-radius: 4px;
862
+ cursor: pointer;
863
+ }
864
+ .yh-ai-conversations__action-btn:hover {
865
+ background-color: var(--yh-fill-color-light);
866
+ color: var(--yh-text-color-primary);
867
+ }
868
+ .yh-ai-conversations__action-btn svg {
869
+ width: 14px;
870
+ height: 14px;
871
+ }
872
+
873
+ .yh-ai-conversations__empty {
874
+ display: flex;
875
+ justify-content: center;
876
+ align-items: center;
877
+ height: 100%;
878
+ color: var(--yh-text-color-secondary);
879
+ font-size: 14px;
880
+ }
881
+
882
+ .yh-ai-conversations__group-label {
883
+ padding: 8px 16px 4px;
884
+ font-size: 11px;
885
+ font-weight: 600;
886
+ color: var(--yh-text-color-disabled);
887
+ text-transform: uppercase;
888
+ letter-spacing: 0.5px;
889
+ user-select: none;
890
+ }
891
+
892
+ .yh-ai-conversations__pin-icon {
893
+ display: flex;
894
+ align-items: center;
895
+ margin-right: 4px;
896
+ color: var(--yh-color-primary-light-3);
897
+ flex-shrink: 0;
898
+ }
899
+
900
+ .yh-ai-conversations__item.is-pinned {
901
+ background-color: var(--yh-color-primary-light-9);
902
+ border-left: 2px solid var(--yh-color-primary-light-4);
903
+ }
904
+
905
+ .yh-ai-conversations__action-btn.is-active {
906
+ color: var(--yh-color-primary) !important;
907
+ }
908
+
909
+ .yh-ai-conversations__skeleton-item {
910
+ display: flex;
911
+ flex-direction: column;
912
+ gap: 8px;
913
+ padding: 12px 16px;
914
+ border-radius: var(--yh-border-radius-base);
915
+ }
916
+
917
+ .yh-ai-conversations__skeleton-line {
918
+ height: 13px;
919
+ border-radius: 7px;
920
+ width: 100%;
921
+ background: linear-gradient(90deg, var(--yh-fill-color) 25%, var(--yh-fill-color-light) 50%, var(--yh-fill-color) 75%);
922
+ background-size: 200% 100%;
923
+ animation: yh-conv-shimmer 1.5s infinite;
924
+ }
925
+
926
+ .yh-conversation-item-enter-active,
927
+ .yh-conversation-item-leave-active {
928
+ transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
929
+ }
930
+
931
+ .yh-conversation-item-enter-from {
932
+ opacity: 0;
933
+ transform: translateX(-12px);
934
+ }
935
+
936
+ .yh-conversation-item-leave-to {
937
+ opacity: 0;
938
+ transform: translateX(12px);
939
+ }
940
+
941
+ @keyframes yh-conv-shimmer {
942
+ 0% {
943
+ background-position: 200% 0;
944
+ }
945
+ 100% {
946
+ background-position: -200% 0;
947
+ }
948
+ }
949
+ </style>