@signalcore/ui 0.1.0 → 1.0.0-beta.1

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 (611) hide show
  1. package/README.md +896 -513
  2. package/dist/AgentAbout.d.ts +186 -0
  3. package/dist/AgentAbout.js +1020 -0
  4. package/dist/AgentAbout.js.map +1 -0
  5. package/dist/AgentCard.d.ts +49 -0
  6. package/dist/AgentCard.js +77 -0
  7. package/dist/AgentCard.js.map +1 -0
  8. package/dist/AgentChat.d.ts +233 -0
  9. package/dist/AgentChat.js +1127 -0
  10. package/dist/AgentChat.js.map +1 -0
  11. package/dist/AgentSpace.d.ts +112 -0
  12. package/dist/AgentSpace.js +339 -0
  13. package/dist/AgentSpace.js.map +1 -0
  14. package/dist/AgentTasks.d.ts +48 -0
  15. package/dist/AgentTasks.js +120 -0
  16. package/dist/AgentTasks.js.map +1 -0
  17. package/dist/BrowserView.d.ts +52 -0
  18. package/dist/BrowserView.js +328 -0
  19. package/dist/BrowserView.js.map +1 -0
  20. package/dist/FileView.d.ts +63 -0
  21. package/dist/FileView.js +449 -0
  22. package/dist/FileView.js.map +1 -0
  23. package/dist/Modes.d.ts +13 -0
  24. package/dist/Modes.js +75 -0
  25. package/dist/Modes.js.map +1 -0
  26. package/dist/VoiceCall.d.ts +91 -0
  27. package/dist/VoiceCall.js +302 -0
  28. package/dist/VoiceCall.js.map +1 -0
  29. package/dist/about.d.ts +212 -0
  30. package/dist/about.js +136 -0
  31. package/dist/about.js.map +1 -0
  32. package/dist/agentIcons.d.ts +33 -0
  33. package/dist/agentIcons.js +36 -0
  34. package/dist/agentIcons.js.map +1 -0
  35. package/dist/automation/Automation.d.ts +35 -0
  36. package/dist/automation/Automation.js +268 -0
  37. package/dist/automation/Automation.js.map +1 -0
  38. package/dist/automation/RunView.d.ts +25 -0
  39. package/dist/automation/RunView.js +187 -0
  40. package/dist/automation/RunView.js.map +1 -0
  41. package/dist/automation/cron.d.ts +41 -0
  42. package/dist/automation/cron.js +169 -0
  43. package/dist/automation/cron.js.map +1 -0
  44. package/dist/automation/marks.js +121 -0
  45. package/dist/automation/marks.js.map +1 -0
  46. package/dist/automation/messages.d.ts +113 -0
  47. package/dist/automation/messages.js +113 -0
  48. package/dist/automation/messages.js.map +1 -0
  49. package/dist/automation/record.d.ts +47 -0
  50. package/dist/automation/record.js +177 -0
  51. package/dist/automation/record.js.map +1 -0
  52. package/dist/automation/types.d.ts +143 -0
  53. package/dist/automation/when.d.ts +36 -0
  54. package/dist/automation/when.js +168 -0
  55. package/dist/automation/when.js.map +1 -0
  56. package/dist/blocks.d.ts +185 -0
  57. package/dist/browser.js +292 -0
  58. package/dist/browser.js.map +1 -0
  59. package/dist/call.d.ts +89 -0
  60. package/dist/call.js +218 -0
  61. package/dist/call.js.map +1 -0
  62. package/dist/channelParts.js +26 -0
  63. package/dist/channelParts.js.map +1 -0
  64. package/dist/classes.js +8 -3
  65. package/dist/classes.js.map +1 -0
  66. package/dist/client.d.ts +146 -54
  67. package/dist/client.js +204 -1
  68. package/dist/client.js.map +1 -0
  69. package/dist/conversationFiles.js +46 -0
  70. package/dist/conversationFiles.js.map +1 -0
  71. package/dist/credentials.d.ts +45 -0
  72. package/dist/credentials.js +98 -0
  73. package/dist/credentials.js.map +1 -0
  74. package/dist/dev.js +17 -0
  75. package/dist/dev.js.map +1 -0
  76. package/dist/es.d.ts +17 -0
  77. package/dist/es.js +382 -0
  78. package/dist/es.js.map +1 -0
  79. package/dist/files.d.ts +21 -0
  80. package/dist/files.js +214 -0
  81. package/dist/files.js.map +1 -0
  82. package/dist/frames.d.ts +115 -0
  83. package/dist/frames.js +219 -0
  84. package/dist/frames.js.map +1 -0
  85. package/dist/icons.js +29 -0
  86. package/dist/icons.js.map +1 -0
  87. package/dist/index.d.ts +63 -60
  88. package/dist/index.js +59 -45
  89. package/dist/kit/AudioPlayer.d.ts +20 -0
  90. package/dist/kit/AudioPlayer.js +116 -0
  91. package/dist/kit/AudioPlayer.js.map +1 -0
  92. package/dist/kit/Button.d.ts +29 -0
  93. package/dist/kit/Button.js +59 -0
  94. package/dist/kit/Button.js.map +1 -0
  95. package/dist/kit/Card.d.ts +16 -0
  96. package/dist/kit/Card.js +36 -0
  97. package/dist/kit/Card.js.map +1 -0
  98. package/dist/kit/Chart.js +152 -0
  99. package/dist/kit/Chart.js.map +1 -0
  100. package/dist/kit/Choices.d.ts +21 -0
  101. package/dist/kit/Choices.js +99 -0
  102. package/dist/kit/Choices.js.map +1 -0
  103. package/dist/kit/Combobox.d.ts +26 -0
  104. package/dist/kit/Combobox.js +190 -0
  105. package/dist/kit/Combobox.js.map +1 -0
  106. package/dist/kit/DateField.d.ts +17 -0
  107. package/dist/kit/DateField.js +133 -0
  108. package/dist/kit/DateField.js.map +1 -0
  109. package/dist/kit/Field.d.ts +40 -0
  110. package/dist/kit/Field.js +98 -0
  111. package/dist/kit/Field.js.map +1 -0
  112. package/dist/kit/FileField.d.ts +113 -0
  113. package/dist/kit/FileField.js +341 -0
  114. package/dist/kit/FileField.js.map +1 -0
  115. package/dist/kit/FileMark.d.ts +15 -0
  116. package/dist/kit/FileMark.js +39 -0
  117. package/dist/kit/FileMark.js.map +1 -0
  118. package/dist/kit/Inputs.d.ts +59 -0
  119. package/dist/kit/Inputs.js +205 -0
  120. package/dist/kit/Inputs.js.map +1 -0
  121. package/dist/kit/List.d.ts +47 -0
  122. package/dist/kit/List.js +85 -0
  123. package/dist/kit/List.js.map +1 -0
  124. package/dist/kit/Mark.d.ts +30 -0
  125. package/dist/kit/Mark.js +27 -0
  126. package/dist/kit/Mark.js.map +1 -0
  127. package/dist/kit/MarkStack.d.ts +15 -0
  128. package/dist/kit/MarkStack.js +26 -0
  129. package/dist/kit/MarkStack.js.map +1 -0
  130. package/dist/kit/Note.d.ts +11 -0
  131. package/dist/kit/Note.js +31 -0
  132. package/dist/kit/Note.js.map +1 -0
  133. package/dist/kit/Popover.js +90 -0
  134. package/dist/kit/Popover.js.map +1 -0
  135. package/dist/kit/RangeField.d.ts +14 -0
  136. package/dist/kit/RangeField.js +47 -0
  137. package/dist/kit/RangeField.js.map +1 -0
  138. package/dist/kit/RatingField.d.ts +14 -0
  139. package/dist/kit/RatingField.js +50 -0
  140. package/dist/kit/RatingField.js.map +1 -0
  141. package/dist/kit/Stat.d.ts +26 -0
  142. package/dist/kit/Stat.js +46 -0
  143. package/dist/kit/Stat.js.map +1 -0
  144. package/dist/kit/Switch.d.ts +14 -0
  145. package/dist/kit/Switch.js +21 -0
  146. package/dist/kit/Switch.js.map +1 -0
  147. package/dist/kit/Tag.d.ts +16 -0
  148. package/dist/kit/Tag.js +20 -0
  149. package/dist/kit/Tag.js.map +1 -0
  150. package/dist/kit/Tile.d.ts +34 -0
  151. package/dist/kit/Tile.js +52 -0
  152. package/dist/kit/Tile.js.map +1 -0
  153. package/dist/kit/TimeField.d.ts +31 -0
  154. package/dist/kit/TimeField.js +109 -0
  155. package/dist/kit/TimeField.js.map +1 -0
  156. package/dist/kit/context.d.ts +22 -0
  157. package/dist/kit/context.js +46 -0
  158. package/dist/kit/context.js.map +1 -0
  159. package/dist/kit/dates.d.ts +14 -0
  160. package/dist/kit/dates.js +129 -0
  161. package/dist/kit/dates.js.map +1 -0
  162. package/dist/kit/messages.d.ts +99 -0
  163. package/dist/kit/messages.js +66 -0
  164. package/dist/kit/messages.js.map +1 -0
  165. package/dist/kit/numbers.d.ts +12 -0
  166. package/dist/kit/numbers.js +40 -0
  167. package/dist/kit/numbers.js.map +1 -0
  168. package/dist/kit/options.d.ts +10 -0
  169. package/dist/kit/options.js +23 -0
  170. package/dist/kit/options.js.map +1 -0
  171. package/dist/kit/uploads.d.ts +42 -0
  172. package/dist/kit/uploads.js +165 -0
  173. package/dist/kit/uploads.js.map +1 -0
  174. package/dist/kit/waveform.js +76 -0
  175. package/dist/kit/waveform.js.map +1 -0
  176. package/dist/locale.d.ts +1 -0
  177. package/dist/locale.js +1 -0
  178. package/dist/markdown.js +84 -0
  179. package/dist/markdown.js.map +1 -0
  180. package/dist/marks.js +217 -0
  181. package/dist/marks.js.map +1 -0
  182. package/dist/reveal.js +48 -0
  183. package/dist/reveal.js.map +1 -0
  184. package/dist/stepGlyphs.js +62 -0
  185. package/dist/stepGlyphs.js.map +1 -0
  186. package/dist/surface/Form.js +264 -0
  187. package/dist/surface/Form.js.map +1 -0
  188. package/dist/surface/Markdown.js +42 -0
  189. package/dist/surface/Markdown.js.map +1 -0
  190. package/dist/surface/Surface.d.ts +31 -17
  191. package/dist/surface/Surface.js +480 -57
  192. package/dist/surface/Surface.js.map +1 -0
  193. package/dist/surface/scope.d.ts +32 -0
  194. package/dist/surface/scope.js +23 -0
  195. package/dist/surface/scope.js.map +1 -0
  196. package/dist/surface/values.d.ts +44 -0
  197. package/dist/surface/values.js +237 -0
  198. package/dist/surface/values.js.map +1 -0
  199. package/dist/tint.d.ts +10 -0
  200. package/dist/tint.js +19 -0
  201. package/dist/tint.js.map +1 -0
  202. package/dist/types.d.ts +541 -0
  203. package/dist/types.js +16 -0
  204. package/dist/types.js.map +1 -0
  205. package/dist/useAgentFace.d.ts +18 -0
  206. package/dist/useAgentFace.js +45 -0
  207. package/dist/useAgentFace.js.map +1 -0
  208. package/dist/useCall.d.ts +39 -0
  209. package/dist/useCall.js +273 -0
  210. package/dist/useCall.js.map +1 -0
  211. package/dist/useConversation.d.ts +77 -0
  212. package/dist/useConversation.js +523 -0
  213. package/dist/useConversation.js.map +1 -0
  214. package/dist/useDictation.d.ts +17 -0
  215. package/dist/useDictation.js +68 -0
  216. package/dist/useDictation.js.map +1 -0
  217. package/dist/useLive.d.ts +26 -0
  218. package/dist/useLive.js +88 -0
  219. package/dist/useLive.js.map +1 -0
  220. package/dist/usePolled.js +68 -0
  221. package/dist/usePolled.js.map +1 -0
  222. package/dist/voice/Orb.d.ts +10 -9
  223. package/dist/voice/Orb.js +43 -39
  224. package/dist/voice/Orb.js.map +1 -0
  225. package/dist/voice/StillOrb.js +33 -0
  226. package/dist/voice/StillOrb.js.map +1 -0
  227. package/dist/voice/WebGLOrb.js +98 -0
  228. package/dist/voice/WebGLOrb.js.map +1 -0
  229. package/dist/voice/fluidDots.js +161 -0
  230. package/dist/voice/fluidDots.js.map +1 -0
  231. package/dist/voice/motion.js +84 -0
  232. package/dist/voice/motion.js.map +1 -0
  233. package/dist/voice/orbs.d.ts +32 -0
  234. package/dist/voice/orbs.js +16 -0
  235. package/dist/voice/orbs.js.map +1 -0
  236. package/dist/voice/useReducedMotion.js +16 -16
  237. package/dist/voice/useReducedMotion.js.map +1 -0
  238. package/dist/voice/wave.js +116 -0
  239. package/dist/voice/wave.js.map +1 -0
  240. package/dist/voice/webgl.js +177 -0
  241. package/dist/voice/webgl.js.map +1 -0
  242. package/dist/widget.js +284 -8
  243. package/package.json +49 -39
  244. package/src/AgentAbout.tsx +1621 -0
  245. package/src/AgentCard.tsx +123 -0
  246. package/src/AgentChat.tsx +1812 -0
  247. package/src/AgentSpace.tsx +540 -0
  248. package/src/AgentTasks.tsx +163 -0
  249. package/src/BrowserView.tsx +442 -0
  250. package/src/FileView.tsx +620 -0
  251. package/src/Modes.tsx +112 -0
  252. package/src/VoiceCall.tsx +411 -0
  253. package/src/about.ts +355 -0
  254. package/src/agentIcons.ts +56 -0
  255. package/src/automation/Automation.tsx +308 -0
  256. package/src/automation/RunView.tsx +213 -0
  257. package/src/automation/cron.ts +196 -0
  258. package/src/automation/marks.tsx +144 -0
  259. package/src/automation/messages.ts +231 -0
  260. package/src/automation/record.ts +206 -0
  261. package/src/automation/types.ts +146 -0
  262. package/src/automation/when.ts +195 -0
  263. package/src/blocks.ts +249 -0
  264. package/src/browser.ts +334 -0
  265. package/src/call.ts +300 -0
  266. package/src/channelParts.ts +17 -0
  267. package/src/classes.ts +10 -0
  268. package/src/client.ts +397 -0
  269. package/src/conversationFiles.ts +54 -0
  270. package/src/credentials.ts +158 -0
  271. package/src/dev.ts +20 -0
  272. package/src/es.ts +423 -0
  273. package/src/files.ts +238 -0
  274. package/src/frames.ts +291 -0
  275. package/src/icons.tsx +49 -0
  276. package/src/index.ts +271 -0
  277. package/src/kit/AudioPlayer.tsx +129 -0
  278. package/src/kit/Button.tsx +97 -0
  279. package/src/kit/Card.tsx +47 -0
  280. package/src/kit/Chart.tsx +129 -0
  281. package/src/kit/Choices.tsx +131 -0
  282. package/src/kit/Combobox.tsx +247 -0
  283. package/src/kit/DateField.tsx +156 -0
  284. package/src/kit/Field.tsx +137 -0
  285. package/src/kit/FileField.tsx +492 -0
  286. package/src/kit/FileMark.tsx +56 -0
  287. package/src/kit/Inputs.tsx +250 -0
  288. package/src/kit/List.tsx +135 -0
  289. package/src/kit/Mark.tsx +64 -0
  290. package/src/kit/MarkStack.tsx +29 -0
  291. package/src/kit/Note.tsx +42 -0
  292. package/src/kit/Popover.tsx +121 -0
  293. package/src/kit/RangeField.tsx +53 -0
  294. package/src/kit/RatingField.tsx +62 -0
  295. package/src/kit/Stat.tsx +60 -0
  296. package/src/kit/Switch.tsx +28 -0
  297. package/src/kit/Tag.tsx +32 -0
  298. package/src/kit/Tile.tsx +74 -0
  299. package/src/kit/TimeField.tsx +157 -0
  300. package/src/kit/context.tsx +246 -0
  301. package/src/kit/dates.ts +150 -0
  302. package/src/kit/messages.ts +160 -0
  303. package/src/kit/numbers.ts +44 -0
  304. package/src/kit/options.ts +30 -0
  305. package/src/kit/uploads.ts +244 -0
  306. package/src/kit/waveform.ts +84 -0
  307. package/src/locale.ts +6 -0
  308. package/src/markdown.ts +69 -0
  309. package/src/marks.tsx +328 -0
  310. package/src/reveal.ts +52 -0
  311. package/src/stepGlyphs.ts +83 -0
  312. package/src/styles.css +6970 -0
  313. package/src/surface/Form.tsx +299 -0
  314. package/src/surface/Markdown.tsx +55 -0
  315. package/src/surface/Surface.tsx +605 -0
  316. package/src/surface/scope.ts +82 -0
  317. package/src/surface/values.ts +361 -0
  318. package/src/tint.ts +14 -0
  319. package/src/types.ts +604 -0
  320. package/src/useAgentFace.ts +47 -0
  321. package/src/useCall.ts +292 -0
  322. package/src/useConversation.ts +627 -0
  323. package/src/useDictation.ts +83 -0
  324. package/src/useLive.ts +115 -0
  325. package/src/usePolled.ts +60 -0
  326. package/src/voice/Orb.tsx +45 -0
  327. package/src/voice/StillOrb.tsx +29 -0
  328. package/src/voice/WebGLOrb.tsx +98 -0
  329. package/src/voice/fluidDots.tsx +171 -0
  330. package/src/voice/motion.ts +112 -0
  331. package/src/voice/orbs.ts +39 -0
  332. package/src/voice/useReducedMotion.ts +24 -0
  333. package/src/voice/wave.tsx +129 -0
  334. package/src/voice/webgl.ts +209 -0
  335. package/src/widget/css.d.ts +5 -0
  336. package/src/widget/element.tsx +535 -0
  337. package/src/widget/index.ts +10 -0
  338. package/src/widget/mount.ts +27 -0
  339. package/src/widget/widget.css +253 -0
  340. package/dist/SignalcoreProvider.d.ts +0 -113
  341. package/dist/SignalcoreProvider.js +0 -84
  342. package/dist/automations/AppMarks.d.ts +0 -11
  343. package/dist/automations/AppMarks.js +0 -18
  344. package/dist/automations/AutomationCard.d.ts +0 -27
  345. package/dist/automations/AutomationCard.js +0 -53
  346. package/dist/automations/AutomationsWindow.d.ts +0 -38
  347. package/dist/automations/AutomationsWindow.js +0 -57
  348. package/dist/automations/Card.d.ts +0 -46
  349. package/dist/automations/Card.js +0 -45
  350. package/dist/automations/ScheduleMarks.d.ts +0 -13
  351. package/dist/automations/ScheduleMarks.js +0 -24
  352. package/dist/automations/presentationIcons.d.ts +0 -7
  353. package/dist/automations/presentationIcons.js +0 -67
  354. package/dist/automations/schedule.d.ts +0 -25
  355. package/dist/automations/schedule.js +0 -59
  356. package/dist/automations/time.d.ts +0 -3
  357. package/dist/automations/time.js +0 -25
  358. package/dist/browser/BrowserView.d.ts +0 -43
  359. package/dist/browser/BrowserView.js +0 -94
  360. package/dist/browser/room.d.ts +0 -21
  361. package/dist/browser/room.js +0 -33
  362. package/dist/browser/useBrowserSession.d.ts +0 -17
  363. package/dist/browser/useBrowserSession.js +0 -67
  364. package/dist/builder/BuilderChat.d.ts +0 -32
  365. package/dist/builder/BuilderChat.js +0 -41
  366. package/dist/builder/BuilderTranscript.d.ts +0 -49
  367. package/dist/builder/BuilderTranscript.js +0 -62
  368. package/dist/builder/StatusLine.d.ts +0 -8
  369. package/dist/builder/StatusLine.js +0 -17
  370. package/dist/builder/answer.d.ts +0 -7
  371. package/dist/builder/answer.js +0 -8
  372. package/dist/builder/blocks.d.ts +0 -31
  373. package/dist/builder/blocks.js +0 -74
  374. package/dist/builder/items.d.ts +0 -15
  375. package/dist/builder/items.js +0 -21
  376. package/dist/builder/steps.d.ts +0 -20
  377. package/dist/builder/steps.js +0 -120
  378. package/dist/builder/time.d.ts +0 -4
  379. package/dist/builder/time.js +0 -24
  380. package/dist/builder/useBuildSession.d.ts +0 -36
  381. package/dist/builder/useBuildSession.js +0 -130
  382. package/dist/builder/workingOn.d.ts +0 -7
  383. package/dist/builder/workingOn.js +0 -15
  384. package/dist/chat/AgentChat.d.ts +0 -37
  385. package/dist/chat/AgentChat.js +0 -21
  386. package/dist/chat/ChatView.d.ts +0 -25
  387. package/dist/chat/ChatView.js +0 -34
  388. package/dist/chat/Composer.d.ts +0 -20
  389. package/dist/chat/Composer.js +0 -22
  390. package/dist/chat/MessageRow.d.ts +0 -22
  391. package/dist/chat/MessageRow.js +0 -32
  392. package/dist/chat/arrival.d.ts +0 -15
  393. package/dist/chat/arrival.js +0 -25
  394. package/dist/chat/history.d.ts +0 -24
  395. package/dist/chat/history.js +0 -45
  396. package/dist/chat/moments.d.ts +0 -25
  397. package/dist/chat/moments.js +0 -72
  398. package/dist/chat/types.d.ts +0 -12
  399. package/dist/chat/types.js +0 -1
  400. package/dist/chat/useComposer.d.ts +0 -46
  401. package/dist/chat/useComposer.js +0 -62
  402. package/dist/chat/useConversation.d.ts +0 -35
  403. package/dist/chat/useConversation.js +0 -71
  404. package/dist/chat/useStickToBottom.d.ts +0 -9
  405. package/dist/chat/useStickToBottom.js +0 -33
  406. package/dist/chat/useTurns.d.ts +0 -49
  407. package/dist/chat/useTurns.js +0 -111
  408. package/dist/classes.d.ts +0 -2
  409. package/dist/development.d.ts +0 -5
  410. package/dist/development.js +0 -8
  411. package/dist/flow/FlowWindow.d.ts +0 -42
  412. package/dist/flow/FlowWindow.js +0 -126
  413. package/dist/flow/index.d.ts +0 -16
  414. package/dist/flow/index.js +0 -16
  415. package/dist/flow/kinds.d.ts +0 -23
  416. package/dist/flow/kinds.js +0 -48
  417. package/dist/flow/map.d.ts +0 -44
  418. package/dist/flow/map.js +0 -225
  419. package/dist/flow/nodePaths.d.ts +0 -7
  420. package/dist/flow/nodePaths.js +0 -17
  421. package/dist/flow/relations.d.ts +0 -42
  422. package/dist/flow/relations.js +0 -174
  423. package/dist/host.d.ts +0 -124
  424. package/dist/host.js +0 -1
  425. package/dist/live/LiveView.d.ts +0 -28
  426. package/dist/live/LiveView.js +0 -55
  427. package/dist/live/capture.d.ts +0 -20
  428. package/dist/live/capture.js +0 -100
  429. package/dist/live/follow.d.ts +0 -26
  430. package/dist/live/follow.js +0 -72
  431. package/dist/live/paint.d.ts +0 -13
  432. package/dist/live/paint.js +0 -77
  433. package/dist/live/useLiveStream.d.ts +0 -16
  434. package/dist/live/useLiveStream.js +0 -57
  435. package/dist/look.d.ts +0 -33
  436. package/dist/look.js +0 -241
  437. package/dist/messages/en.d.ts +0 -3
  438. package/dist/messages/en.js +0 -251
  439. package/dist/messages/es.d.ts +0 -3
  440. package/dist/messages/es.js +0 -251
  441. package/dist/messages/index.d.ts +0 -16
  442. package/dist/messages/index.js +0 -33
  443. package/dist/messages/types.d.ts +0 -246
  444. package/dist/messages/types.js +0 -1
  445. package/dist/parts/Button.d.ts +0 -18
  446. package/dist/parts/Button.js +0 -17
  447. package/dist/parts/Icon.d.ts +0 -39
  448. package/dist/parts/Icon.js +0 -37
  449. package/dist/parts/Input.d.ts +0 -6
  450. package/dist/parts/Input.js +0 -11
  451. package/dist/parts/Spinner.d.ts +0 -2
  452. package/dist/parts/Spinner.js +0 -7
  453. package/dist/patterns.d.ts +0 -15
  454. package/dist/patterns.js +0 -5
  455. package/dist/presets.d.ts +0 -82
  456. package/dist/presets.js +0 -81
  457. package/dist/primitives.d.ts +0 -22
  458. package/dist/primitives.js +0 -58
  459. package/dist/request/RequestCard.d.ts +0 -34
  460. package/dist/request/RequestCard.js +0 -101
  461. package/dist/request/approval/ApprovalPreview.d.ts +0 -5
  462. package/dist/request/approval/ApprovalPreview.js +0 -27
  463. package/dist/request/approval/shapes.d.ts +0 -32
  464. package/dist/request/approval/shapes.js +0 -68
  465. package/dist/request/apps.d.ts +0 -11
  466. package/dist/request/apps.js +0 -27
  467. package/dist/request/cards.d.ts +0 -12
  468. package/dist/request/cards.js +0 -24
  469. package/dist/request/deliver.d.ts +0 -12
  470. package/dist/request/deliver.js +0 -21
  471. package/dist/request/handOver.d.ts +0 -18
  472. package/dist/request/handOver.js +0 -33
  473. package/dist/request/kinds/Approval.d.ts +0 -3
  474. package/dist/request/kinds/Approval.js +0 -9
  475. package/dist/request/kinds/Choice.d.ts +0 -3
  476. package/dist/request/kinds/Choice.js +0 -8
  477. package/dist/request/kinds/Connect.d.ts +0 -9
  478. package/dist/request/kinds/Connect.js +0 -119
  479. package/dist/request/kinds/FreeText.d.ts +0 -3
  480. package/dist/request/kinds/FreeText.js +0 -20
  481. package/dist/request/kinds/HandOver.d.ts +0 -13
  482. package/dist/request/kinds/HandOver.js +0 -20
  483. package/dist/request/kinds/Secret.d.ts +0 -7
  484. package/dist/request/kinds/Secret.js +0 -49
  485. package/dist/request/kinds/Upload.d.ts +0 -6
  486. package/dist/request/kinds/Upload.js +0 -47
  487. package/dist/request/types.d.ts +0 -83
  488. package/dist/request/types.js +0 -1
  489. package/dist/safeUrl.d.ts +0 -6
  490. package/dist/safeUrl.js +0 -8
  491. package/dist/stream/builder.d.ts +0 -176
  492. package/dist/stream/builder.js +0 -202
  493. package/dist/stream/reduce.d.ts +0 -51
  494. package/dist/stream/reduce.js +0 -58
  495. package/dist/stream/untilAborted.d.ts +0 -7
  496. package/dist/stream/untilAborted.js +0 -32
  497. package/dist/stream/useRunStream.d.ts +0 -26
  498. package/dist/stream/useRunStream.js +0 -137
  499. package/dist/styles.css +0 -2318
  500. package/dist/surface/HostNode.d.ts +0 -14
  501. package/dist/surface/HostNode.js +0 -30
  502. package/dist/surface/Node.d.ts +0 -7
  503. package/dist/surface/Node.js +0 -49
  504. package/dist/surface/SurfaceBoundary.d.ts +0 -26
  505. package/dist/surface/SurfaceBoundary.js +0 -20
  506. package/dist/surface/bindings.d.ts +0 -14
  507. package/dist/surface/bindings.js +0 -37
  508. package/dist/surface/check.d.ts +0 -27
  509. package/dist/surface/check.js +0 -102
  510. package/dist/surface/format.d.ts +0 -10
  511. package/dist/surface/format.js +0 -32
  512. package/dist/surface/hosts.d.ts +0 -6
  513. package/dist/surface/hosts.js +0 -11
  514. package/dist/surface/scene.d.ts +0 -21
  515. package/dist/surface/scene.js +0 -8
  516. package/dist/surface/templates/Browser.d.ts +0 -6
  517. package/dist/surface/templates/Browser.js +0 -11
  518. package/dist/surface/templates/Chart.d.ts +0 -6
  519. package/dist/surface/templates/Chart.js +0 -13
  520. package/dist/surface/templates/Choices.d.ts +0 -3
  521. package/dist/surface/templates/Choices.js +0 -12
  522. package/dist/surface/templates/Form.d.ts +0 -3
  523. package/dist/surface/templates/Form.js +0 -44
  524. package/dist/surface/templates/KeyValue.d.ts +0 -3
  525. package/dist/surface/templates/KeyValue.js +0 -7
  526. package/dist/surface/templates/Layout.d.ts +0 -5
  527. package/dist/surface/templates/Layout.js +0 -16
  528. package/dist/surface/templates/Live.d.ts +0 -6
  529. package/dist/surface/templates/Live.js +0 -9
  530. package/dist/surface/templates/Media.d.ts +0 -5
  531. package/dist/surface/templates/Media.js +0 -13
  532. package/dist/surface/templates/Slots.d.ts +0 -3
  533. package/dist/surface/templates/Slots.js +0 -19
  534. package/dist/surface/templates/Table.d.ts +0 -3
  535. package/dist/surface/templates/Table.js +0 -12
  536. package/dist/surface/templates/Text.d.ts +0 -4
  537. package/dist/surface/templates/Text.js +0 -15
  538. package/dist/surface/templates/index.d.ts +0 -7
  539. package/dist/surface/templates/index.js +0 -32
  540. package/dist/surface/types.d.ts +0 -68
  541. package/dist/surface/types.js +0 -6
  542. package/dist/theme.d.ts +0 -62
  543. package/dist/theme.js +0 -9
  544. package/dist/useTokens.d.ts +0 -7
  545. package/dist/useTokens.js +0 -41
  546. package/dist/voice/VoiceWindow.d.ts +0 -18
  547. package/dist/voice/VoiceWindow.js +0 -35
  548. package/dist/voice/index.d.ts +0 -13
  549. package/dist/voice/index.js +0 -12
  550. package/dist/voice/meter.d.ts +0 -16
  551. package/dist/voice/meter.js +0 -52
  552. package/dist/voice/orbColors.d.ts +0 -16
  553. package/dist/voice/orbColors.js +0 -75
  554. package/dist/voice/pushable.d.ts +0 -16
  555. package/dist/voice/pushable.js +0 -56
  556. package/dist/voice/useDictation.d.ts +0 -24
  557. package/dist/voice/useDictation.js +0 -60
  558. package/dist/voice/useReducedMotion.d.ts +0 -5
  559. package/dist/voice/useVoice.d.ts +0 -70
  560. package/dist/voice/useVoice.js +0 -197
  561. package/dist/voice/useVoicePrimitives.d.ts +0 -7
  562. package/dist/voice/useVoicePrimitives.js +0 -11
  563. package/dist/voice/voice.d.ts +0 -55
  564. package/dist/voice/voice.js +0 -9
  565. package/dist/voice/webSpeech.d.ts +0 -33
  566. package/dist/voice/webSpeech.js +0 -258
  567. package/dist/widget.js.map +0 -1
  568. package/dist/windows/AgentSpace.d.ts +0 -78
  569. package/dist/windows/AgentSpace.js +0 -135
  570. package/dist/windows/Captions.d.ts +0 -13
  571. package/dist/windows/Captions.js +0 -22
  572. package/dist/windows/Dock.d.ts +0 -37
  573. package/dist/windows/Dock.js +0 -22
  574. package/dist/windows/Journal.d.ts +0 -15
  575. package/dist/windows/Journal.js +0 -19
  576. package/dist/windows/KindMark.d.ts +0 -7
  577. package/dist/windows/KindMark.js +0 -31
  578. package/dist/windows/Pending.d.ts +0 -8
  579. package/dist/windows/Pending.js +0 -17
  580. package/dist/windows/Stage.d.ts +0 -18
  581. package/dist/windows/Stage.js +0 -21
  582. package/dist/windows/StatusLabel.d.ts +0 -9
  583. package/dist/windows/StatusLabel.js +0 -7
  584. package/dist/windows/Strip.d.ts +0 -17
  585. package/dist/windows/Strip.js +0 -42
  586. package/dist/windows/SurfaceWindow.d.ts +0 -20
  587. package/dist/windows/SurfaceWindow.js +0 -12
  588. package/dist/windows/WindowFrame.d.ts +0 -23
  589. package/dist/windows/WindowFrame.js +0 -22
  590. package/dist/windows/hearing.d.ts +0 -11
  591. package/dist/windows/hearing.js +0 -26
  592. package/dist/windows/kinds.d.ts +0 -47
  593. package/dist/windows/kinds.js +0 -28
  594. package/dist/windows/reduce.d.ts +0 -98
  595. package/dist/windows/reduce.js +0 -151
  596. package/dist/windows/registry.d.ts +0 -18
  597. package/dist/windows/registry.js +0 -61
  598. package/dist/windows/reveal.d.ts +0 -9
  599. package/dist/windows/reveal.js +0 -6
  600. package/dist/windows/space.d.ts +0 -21
  601. package/dist/windows/space.js +0 -6
  602. package/dist/windows/status.d.ts +0 -11
  603. package/dist/windows/status.js +0 -30
  604. package/dist/windows/types.d.ts +0 -15
  605. package/dist/windows/types.js +0 -1
  606. package/dist/windows/useLoaded.d.ts +0 -44
  607. package/dist/windows/useLoaded.js +0 -58
  608. package/dist/windows/useUnread.d.ts +0 -7
  609. package/dist/windows/useUnread.js +0 -21
  610. package/dist/windows/useWindows.d.ts +0 -70
  611. package/dist/windows/useWindows.js +0 -60
package/dist/styles.css DELETED
@@ -1,2318 +0,0 @@
1
- /*
2
- * @signalcore/ui: the shipped styles.
3
- *
4
- * Dropped into a page they use the page's own font, text color and color scheme; everything else
5
- * is a --sc-* token with a default here, so a host changes only what it wants different (in CSS,
6
- * or through the provider's `theme`). The tokens are listed in src/theme.ts; `density` scales
7
- * the room things take, `radius` the corners, `font-size` the type.
8
- *
9
- * Nothing here leaks: every rule sits in the `signalcore` layer (a host's own CSS wins without a
10
- * specificity fight) and under the provider's wrapper, and a wrapper marked `data-sc-unstyled`
11
- * (the provider's `unstyled`) is skipped, so a host that styles through `classNames` alone loses
12
- * none of the classes and none of this.
13
- *
14
- * Classes are BEM, one per slot (`sc-card`, `sc-card__title`, `sc-button--primary`); see
15
- * src/look.ts for the list.
16
- */
17
- @layer signalcore {
18
- :where(.sc-ui:not([data-sc-unstyled])) {
19
- /* The wrapper takes no room of its own. */
20
- display: contents;
21
-
22
- /*
23
- * Working copies of the tokens: the host's, else the default. Colors that are not set derive
24
- * from the page's text color (tints of `currentColor`), so any page, light or dark, gets
25
- * readable lines and muted text without saying anything.
26
- */
27
- --_fs: var(--sc-font-size, 14px);
28
- --_fs-xs: calc(var(--_fs) * 12 / 14);
29
- --_fs-ui: calc(var(--_fs) * 13 / 14);
30
- --_fs-md: calc(var(--_fs) * 15 / 14);
31
- --_density: var(--sc-density, 1);
32
- --_s2: calc(2px * var(--_density));
33
- --_s4: calc(4px * var(--_density));
34
- --_s6: calc(6px * var(--_density));
35
- --_s8: calc(8px * var(--_density));
36
- --_s10: calc(10px * var(--_density));
37
- --_s12: calc(12px * var(--_density));
38
- --_s14: calc(14px * var(--_density));
39
- --_s16: calc(16px * var(--_density));
40
- --_s20: calc(20px * var(--_density));
41
- --_radius: var(--sc-radius, 12px);
42
- --_radius-md: calc(var(--_radius) * 2 / 3);
43
- --_radius-sm: calc(var(--_radius) / 2);
44
- --_mono: var(
45
- --sc-font-mono,
46
- ui-monospace,
47
- "SF Mono",
48
- "Cascadia Mono",
49
- "Roboto Mono",
50
- Menlo,
51
- monospace
52
- );
53
-
54
- --_text: var(--sc-text, currentColor);
55
- --_muted: var(--sc-muted, color-mix(in srgb, currentColor 68%, transparent));
56
- --_subtle: var(--sc-subtle, color-mix(in srgb, currentColor 52%, transparent));
57
- --_surface: var(--sc-surface, var(--sc-bg, transparent));
58
- --_sunken: var(--sc-sunken, color-mix(in srgb, currentColor 5%, transparent));
59
- --_line: var(--sc-line, color-mix(in srgb, currentColor 13%, transparent));
60
- --_line-strong: var(--sc-line-strong, color-mix(in srgb, currentColor 24%, transparent));
61
- --_accent: var(
62
- --sc-accent,
63
- light-dark(color-mix(in oklch, #9932cc 86%, black), color-mix(in oklch, #9932cc 62%, white))
64
- );
65
- --_accent-fg: var(--sc-accent-fg, light-dark(#ffffff, #120c24));
66
- --_accent-soft: var(--sc-accent-soft, color-mix(in srgb, var(--_accent) 12%, transparent));
67
- --_signal: var(
68
- --sc-signal,
69
- light-dark(color-mix(in oklch, #ff8c00 80%, black), color-mix(in oklch, #ff8c00 82%, white))
70
- );
71
- --_signal-soft: var(--sc-signal-soft, color-mix(in srgb, var(--_signal) 14%, transparent));
72
- --_ok: var(--sc-ok, light-dark(#1f7a4d, #5dbb88));
73
- --_ok-soft: var(--sc-ok-soft, color-mix(in srgb, var(--_ok) 14%, transparent));
74
- --_danger: var(--sc-danger, light-dark(#c0392b, #ef7a6a));
75
- --_danger-soft: var(--sc-danger-soft, color-mix(in srgb, var(--_danger) 13%, transparent));
76
- --_focus: var(--sc-focus, color-mix(in srgb, var(--_accent) 40%, transparent));
77
- --_face: var(--sc-face, var(--_surface));
78
- --_face-hover: var(--sc-face-hover, var(--_sunken));
79
- /* A button has a little body: a lit upper edge, and a shadow that closes the lower one. */
80
- --_shadow-button:
81
- inset 0 1px 0 light-dark(rgb(255 255 255 / 0.6), rgb(255 255 255 / 0.06)),
82
- 0 1px 1px light-dark(rgb(0 0 0 / 0.05), rgb(0 0 0 / 0.3));
83
- --_shadow-button-primary: inset 0 1px 0 rgb(255 255 255 / 0.18), 0 1px 1px rgb(0 0 0 / 0.08);
84
- --_shadow-raised: 0 1px 2px rgb(0 0 0 / 0.04);
85
- --_shadow-float: 0 1px 2px rgb(0 0 0 / 0.04), 0 8px 24px -12px rgb(0 0 0 / 0.12);
86
- --_ease: cubic-bezier(0.22, 1, 0.36, 1);
87
- }
88
-
89
- /*
90
- * The three things the package draws on a page. The font and the color are the page's own
91
- * (`inherit`), the size is the reading size, and the color scheme follows the reader's
92
- * preference, unless an ancestor says otherwise (see below). Zero specificity: a host's rule on
93
- * any of them wins.
94
- */
95
- :where(.sc-ui:not([data-sc-unstyled]))
96
- :where(
97
- .sc-surface,
98
- .sc-request,
99
- .sc-browser,
100
- .sc-live,
101
- .sc-chat,
102
- .sc-voice,
103
- .sc-composer,
104
- .sc-transcript,
105
- .sc-status-line,
106
- .sc-automations,
107
- .sc-automation,
108
- .sc-flow,
109
- .sc-window,
110
- .sc-space
111
- ) {
112
- color-scheme: light dark;
113
- color: inherit;
114
- font-family: var(--sc-font, inherit);
115
- font-size: var(--_fs);
116
- line-height: 1.55;
117
- }
118
-
119
- /*
120
- * A `data-theme` of "light" or "dark" on <html>, on the provider, or on anything between it and
121
- * what we draw, decides the scheme; of those, the one written last here wins a disagreement.
122
- */
123
- :where(
124
- [data-theme="light"] .sc-ui:not([data-sc-unstyled]),
125
- .sc-ui:not([data-sc-unstyled])[data-theme="light"],
126
- .sc-ui:not([data-sc-unstyled]) [data-theme="light"]
127
- )
128
- :is(
129
- .sc-surface,
130
- .sc-request,
131
- .sc-browser,
132
- .sc-live,
133
- .sc-chat,
134
- .sc-voice,
135
- .sc-composer,
136
- .sc-transcript,
137
- .sc-status-line,
138
- .sc-automations,
139
- .sc-automation,
140
- .sc-flow,
141
- .sc-window,
142
- .sc-space
143
- ),
144
- :where(.sc-ui:not([data-sc-unstyled]))
145
- :is(
146
- .sc-surface,
147
- .sc-request,
148
- .sc-browser,
149
- .sc-live,
150
- .sc-chat,
151
- .sc-voice,
152
- .sc-composer,
153
- .sc-transcript,
154
- .sc-status-line,
155
- .sc-automations,
156
- .sc-automation,
157
- .sc-flow,
158
- .sc-window,
159
- .sc-space
160
- )[data-theme="light"] {
161
- color-scheme: light;
162
- }
163
-
164
- :where(
165
- [data-theme="dark"] .sc-ui:not([data-sc-unstyled]),
166
- .sc-ui:not([data-sc-unstyled])[data-theme="dark"],
167
- .sc-ui:not([data-sc-unstyled]) [data-theme="dark"]
168
- )
169
- :is(
170
- .sc-surface,
171
- .sc-request,
172
- .sc-browser,
173
- .sc-live,
174
- .sc-chat,
175
- .sc-voice,
176
- .sc-composer,
177
- .sc-transcript,
178
- .sc-status-line,
179
- .sc-automations,
180
- .sc-automation,
181
- .sc-flow,
182
- .sc-window,
183
- .sc-space
184
- ),
185
- :where(.sc-ui:not([data-sc-unstyled]))
186
- :is(
187
- .sc-surface,
188
- .sc-request,
189
- .sc-browser,
190
- .sc-live,
191
- .sc-chat,
192
- .sc-voice,
193
- .sc-composer,
194
- .sc-transcript,
195
- .sc-status-line,
196
- .sc-automations,
197
- .sc-automation,
198
- .sc-flow,
199
- .sc-window,
200
- .sc-space
201
- )[data-theme="dark"] {
202
- color-scheme: dark;
203
- }
204
-
205
- /* A small reset, scoped to what we draw and weaker than any class a host adds to it. */
206
- :where(.sc-ui:not([data-sc-unstyled]))
207
- :where(
208
- .sc-surface,
209
- .sc-request,
210
- .sc-browser,
211
- .sc-live,
212
- .sc-chat,
213
- .sc-voice,
214
- .sc-composer,
215
- .sc-transcript,
216
- .sc-status-line,
217
- .sc-automations,
218
- .sc-automation,
219
- .sc-flow,
220
- .sc-window,
221
- .sc-space
222
- ) {
223
- :where(*, *::before, *::after) {
224
- box-sizing: border-box;
225
- }
226
- :where(h3, p, dl, dd, figure, ol, ul, pre) {
227
- margin: 0;
228
- }
229
- :where(ol, ul) {
230
- padding: 0;
231
- list-style: none;
232
- }
233
- :where(table) {
234
- border-collapse: collapse;
235
- }
236
- :where(img) {
237
- display: block;
238
- max-width: 100%;
239
- }
240
- :where(button, input, select, textarea) {
241
- font: inherit;
242
- color: inherit;
243
- }
244
- :where(button) {
245
- padding: 0;
246
- border: 0;
247
- background: none;
248
- cursor: pointer;
249
- }
250
- :where(:focus-visible) {
251
- outline: 2px solid var(--_focus);
252
- outline-offset: 2px;
253
- }
254
- }
255
-
256
- :where(.sc-ui:not([data-sc-unstyled])) {
257
- /* --- A surface ------------------------------------------------------------------------ */
258
-
259
- .sc-surface {
260
- width: 100%;
261
- }
262
- .sc-surface--text {
263
- white-space: pre-wrap;
264
- color: var(--_muted);
265
- }
266
-
267
- .sc-column {
268
- display: flex;
269
- flex-direction: column;
270
- gap: var(--_s8);
271
- }
272
- .sc-row {
273
- display: flex;
274
- flex-wrap: wrap;
275
- gap: var(--_s8);
276
- }
277
-
278
- .sc-card {
279
- display: flex;
280
- flex-direction: column;
281
- gap: var(--_s10);
282
- padding: var(--_s14);
283
- border: 1px solid var(--_line);
284
- border-radius: var(--_radius);
285
- background: var(--_surface);
286
- }
287
- /* The pattern `card: "raised"`: the card lifts a hair off the page. */
288
- .sc-card--raised {
289
- box-shadow: var(--_shadow-raised);
290
- }
291
- .sc-card__title {
292
- font-size: var(--_fs);
293
- font-weight: 500;
294
- }
295
- .sc-card__subtitle {
296
- font-size: var(--_fs-xs);
297
- color: var(--_subtle);
298
- }
299
-
300
- .sc-text {
301
- line-height: 1.625;
302
- }
303
- .sc-text--heading {
304
- font-size: var(--_fs-md);
305
- font-weight: 500;
306
- line-height: 1.5;
307
- }
308
- .sc-text--caption {
309
- font-size: var(--_fs-xs);
310
- line-height: 1.5;
311
- color: var(--_subtle);
312
- }
313
-
314
- .sc-callout {
315
- padding: var(--_s8) var(--_s12);
316
- border-radius: var(--_radius-md);
317
- font-size: var(--_fs-ui);
318
- line-height: 1.5;
319
- }
320
- .sc-callout--info {
321
- background: var(--_accent-soft);
322
- }
323
- .sc-callout--success {
324
- background: var(--_ok-soft);
325
- }
326
- .sc-callout--warning {
327
- background: var(--_signal-soft);
328
- }
329
- .sc-callout--error {
330
- background: var(--_danger-soft);
331
- }
332
-
333
- .sc-image {
334
- max-height: 16rem;
335
- border-radius: var(--_radius-md);
336
- object-fit: cover;
337
- }
338
- .sc-link {
339
- font-size: var(--_fs-ui);
340
- color: var(--_accent);
341
- text-decoration: none;
342
- text-underline-offset: 2px;
343
- }
344
- .sc-link:hover {
345
- text-decoration: underline;
346
- }
347
-
348
- .sc-pairs {
349
- display: grid;
350
- grid-template-columns: auto 1fr;
351
- gap: var(--_s4) var(--_s16);
352
- font-size: var(--_fs-ui);
353
- line-height: 1.5;
354
- }
355
- .sc-pairs__row {
356
- display: contents;
357
- }
358
- .sc-pairs__label {
359
- color: var(--_subtle);
360
- }
361
- .sc-pairs__value {
362
- font-weight: 500;
363
- text-align: right;
364
- }
365
-
366
- .sc-table-wrap {
367
- overflow-x: auto;
368
- }
369
- .sc-table {
370
- width: 100%;
371
- font-size: var(--_fs-ui);
372
- line-height: 1.5;
373
- text-align: left;
374
- }
375
- .sc-table__row {
376
- border-bottom: 1px solid color-mix(in srgb, var(--_line) 60%, transparent);
377
- }
378
- .sc-table tbody .sc-table__row:last-child {
379
- border-bottom: 0;
380
- }
381
- .sc-table__row--head {
382
- border-bottom-color: var(--_line);
383
- color: var(--_subtle);
384
- }
385
- .sc-table__head,
386
- .sc-table__cell {
387
- padding: var(--_s6) var(--_s12) var(--_s6) 0;
388
- }
389
- .sc-table__head {
390
- font-weight: 400;
391
- text-align: left;
392
- }
393
- /* The pattern `table: "compact"`: rows close together, for a lot of records. */
394
- .sc-table--compact {
395
- font-size: var(--_fs-xs);
396
- }
397
- .sc-table--compact .sc-table__head,
398
- .sc-table--compact .sc-table__cell {
399
- padding-block: var(--_s2);
400
- }
401
-
402
- .sc-chart {
403
- display: flex;
404
- flex-direction: column;
405
- gap: var(--_s6);
406
- }
407
- .sc-chart__title {
408
- font-size: var(--_fs-xs);
409
- color: var(--_subtle);
410
- }
411
- .sc-chart__row {
412
- display: grid;
413
- grid-template-columns: 6rem 1fr auto;
414
- align-items: center;
415
- gap: var(--_s8);
416
- font-size: var(--_fs-xs);
417
- }
418
- .sc-chart__label {
419
- overflow: hidden;
420
- color: var(--_subtle);
421
- text-overflow: ellipsis;
422
- white-space: nowrap;
423
- }
424
- .sc-chart__bar {
425
- height: calc(8px * var(--_density));
426
- border-radius: 9999px;
427
- background: var(--_accent);
428
- }
429
- .sc-chart__value {
430
- font-family: var(--_mono);
431
- }
432
-
433
- .sc-choices {
434
- display: flex;
435
- flex-direction: column;
436
- gap: var(--_s6);
437
- }
438
- .sc-choice {
439
- padding: var(--_s8) var(--_s12);
440
- border: 1px solid var(--_line-strong);
441
- border-radius: var(--_radius-md);
442
- background: var(--_surface);
443
- font-size: var(--_fs-ui);
444
- line-height: 1.5;
445
- text-align: left;
446
- }
447
- .sc-choice:hover {
448
- background: var(--_sunken);
449
- }
450
- .sc-choice:disabled {
451
- cursor: default;
452
- opacity: 0.6;
453
- }
454
- .sc-choice__label {
455
- font-weight: 500;
456
- }
457
- .sc-choice__description {
458
- display: block;
459
- font-size: var(--_fs-xs);
460
- color: var(--_subtle);
461
- }
462
-
463
- .sc-slots {
464
- display: flex;
465
- flex-wrap: wrap;
466
- gap: var(--_s6);
467
- }
468
-
469
- .sc-form {
470
- display: flex;
471
- flex-direction: column;
472
- gap: var(--_s10);
473
- }
474
- /* The pattern `actions: "footer"`: the button is set apart below the fields, on a line. */
475
- .sc-form__actions--footer {
476
- display: flex;
477
- justify-content: flex-end;
478
- padding-top: var(--_s10);
479
- border-top: 1px solid var(--_line);
480
- }
481
- .sc-field {
482
- display: flex;
483
- flex-direction: column;
484
- gap: var(--_s4);
485
- font-size: var(--_fs-xs);
486
- color: var(--_subtle);
487
- }
488
- .sc-input,
489
- .sc-select {
490
- width: 100%;
491
- height: calc(36px * var(--_density));
492
- padding: 0 var(--_s12);
493
- border: 1px solid var(--_line-strong);
494
- border-radius: var(--_radius-md);
495
- background: var(--_surface);
496
- box-shadow: inset 0 1px 0 rgb(0 0 0 / 0.02);
497
- font-size: var(--_fs-ui);
498
- line-height: 1.5;
499
- color: var(--_text);
500
- transition:
501
- border-color 0.15s,
502
- box-shadow 0.15s;
503
- }
504
- .sc-select {
505
- padding: 0 var(--_s8);
506
- }
507
- .sc-input::placeholder {
508
- color: var(--_subtle);
509
- }
510
- .sc-input:hover,
511
- .sc-select:hover {
512
- border-color: color-mix(in srgb, var(--_subtle) 60%, transparent);
513
- }
514
- .sc-input:focus,
515
- .sc-select:focus {
516
- border-color: var(--_accent);
517
- box-shadow:
518
- inset 0 1px 0 rgb(0 0 0 / 0.02),
519
- 0 0 0 2px var(--_focus);
520
- outline: none;
521
- }
522
- .sc-input:disabled,
523
- .sc-select:disabled {
524
- opacity: 0.6;
525
- }
526
- .sc-checkbox {
527
- align-self: flex-start;
528
- width: 16px;
529
- height: 16px;
530
- accent-color: var(--_accent);
531
- }
532
-
533
- /* --- Buttons and small parts -------------------------------------------------------------- */
534
-
535
- .sc-button {
536
- display: inline-flex;
537
- flex-shrink: 0;
538
- align-items: center;
539
- justify-content: center;
540
- font-size: var(--_fs-ui);
541
- font-weight: 500;
542
- line-height: 1.5;
543
- letter-spacing: -0.01em;
544
- white-space: nowrap;
545
- user-select: none;
546
- transition:
547
- background-color 0.15s,
548
- opacity 0.15s,
549
- transform 0.15s;
550
- }
551
- .sc-button:active:not(:disabled) {
552
- transform: scale(0.985);
553
- }
554
- .sc-button:disabled {
555
- cursor: not-allowed;
556
- opacity: 0.5;
557
- }
558
- .sc-button--sm {
559
- height: calc(28px * var(--_density));
560
- gap: var(--_s6);
561
- padding: 0 var(--_s12);
562
- border-radius: var(--_radius-sm);
563
- }
564
- .sc-button--md {
565
- height: calc(36px * var(--_density));
566
- gap: var(--_s8);
567
- padding: 0 var(--_s16);
568
- border-radius: var(--_radius-md);
569
- }
570
- .sc-button--primary {
571
- background: var(--_accent);
572
- box-shadow: var(--_shadow-button-primary);
573
- color: var(--_accent-fg);
574
- }
575
- .sc-button--primary:hover:not(:disabled) {
576
- background: color-mix(in srgb, var(--_accent) 92%, transparent);
577
- }
578
- .sc-button--secondary {
579
- border: 1px solid var(--_line-strong);
580
- background: var(--_face);
581
- box-shadow: var(--_shadow-button);
582
- }
583
- .sc-button--secondary:hover:not(:disabled) {
584
- background: var(--_face-hover);
585
- }
586
- .sc-button--ghost {
587
- color: var(--_muted);
588
- }
589
- .sc-button--ghost:hover:not(:disabled) {
590
- background: var(--_sunken);
591
- color: var(--_text);
592
- }
593
-
594
- .sc-icon-button {
595
- display: inline-flex;
596
- flex-shrink: 0;
597
- align-items: center;
598
- justify-content: center;
599
- width: calc(32px * var(--_density));
600
- height: calc(32px * var(--_density));
601
- border-radius: var(--_radius-md);
602
- color: var(--_muted);
603
- transition:
604
- background-color 0.15s,
605
- color 0.15s;
606
- }
607
- .sc-icon-button:hover:not(:disabled) {
608
- background: var(--_sunken);
609
- color: var(--_text);
610
- }
611
- .sc-icon-button:disabled {
612
- opacity: 0.4;
613
- }
614
- /* On a phone the small tile already fills the screen: there is nothing to enlarge. */
615
- @media (max-width: 639px) {
616
- .sc-icon-button--enlarge {
617
- display: none;
618
- }
619
- }
620
-
621
- .sc-icon,
622
- .sc-request__icon,
623
- .sc-drop__icon {
624
- flex-shrink: 0;
625
- width: 16px;
626
- height: 16px;
627
- }
628
- .sc-spinner {
629
- flex-shrink: 0;
630
- width: 14px;
631
- height: 14px;
632
- animation: sc-spin 0.8s linear infinite;
633
- }
634
- .sc-sr-only {
635
- position: absolute;
636
- width: 1px;
637
- height: 1px;
638
- margin: -1px;
639
- padding: 0;
640
- overflow: hidden;
641
- border: 0;
642
- clip-path: inset(50%);
643
- white-space: nowrap;
644
- }
645
- .sc-error {
646
- font-size: var(--_fs-xs);
647
- color: var(--_danger);
648
- }
649
-
650
- /* --- The browser the agent drives --------------------------------------------------------- */
651
-
652
- .sc-browser {
653
- width: 100%;
654
- max-width: 26.25rem;
655
- overflow: hidden;
656
- border: 1px solid var(--_line);
657
- border-radius: var(--_radius);
658
- background: var(--_surface);
659
- transition: max-width 0.5s var(--_ease);
660
- }
661
- /* As big as the window allows while keeping the page's 4:3 shape: 86% of its height for the
662
- whole tile, the header and caption (8.5rem) included, and never smaller than the small one. */
663
- .sc-browser--large {
664
- max-width: max(26.25rem, calc((86vh - 8.5rem) * 4 / 3));
665
- }
666
- .sc-browser--spacious {
667
- margin-inline: auto;
668
- box-shadow: var(--_shadow-float);
669
- }
670
- .sc-browser__header {
671
- display: flex;
672
- flex-direction: column;
673
- gap: var(--_s6);
674
- padding: var(--_s8) var(--_s12);
675
- border-bottom: 1px solid var(--_line);
676
- }
677
- .sc-browser__driver {
678
- display: flex;
679
- min-width: 0;
680
- align-items: center;
681
- gap: var(--_s8);
682
- }
683
- .sc-browser__dot {
684
- flex-shrink: 0;
685
- width: 8px;
686
- height: 8px;
687
- border-radius: 9999px;
688
- }
689
- .sc-browser__dot--agent {
690
- background: var(--_signal);
691
- }
692
- .sc-browser__dot--owner {
693
- background: var(--_accent);
694
- }
695
- .sc-browser__dot--live {
696
- animation: sc-pulse 1.4s ease-in-out infinite;
697
- }
698
- .sc-browser__who {
699
- min-width: 0;
700
- overflow: hidden;
701
- font-size: var(--_fs-xs);
702
- font-weight: 500;
703
- color: var(--_muted);
704
- text-overflow: ellipsis;
705
- white-space: nowrap;
706
- }
707
- .sc-browser__controls {
708
- display: flex;
709
- flex-shrink: 0;
710
- align-items: center;
711
- gap: var(--_s4);
712
- margin-left: auto;
713
- }
714
- .sc-browser__site {
715
- overflow: hidden;
716
- padding: var(--_s4) var(--_s8);
717
- border-radius: var(--_radius-sm);
718
- background: var(--_sunken);
719
- font-size: var(--_fs-xs);
720
- color: var(--_subtle);
721
- text-overflow: ellipsis;
722
- white-space: nowrap;
723
- }
724
- .sc-browser__site-name {
725
- font-weight: 500;
726
- color: var(--_text);
727
- }
728
- .sc-browser__screen {
729
- position: relative;
730
- width: 100%;
731
- aspect-ratio: 4 / 3;
732
- background: var(--_sunken);
733
- }
734
- .sc-browser__frame {
735
- width: 100%;
736
- height: 100%;
737
- border: 0;
738
- }
739
- .sc-browser__shot {
740
- width: 100%;
741
- height: 100%;
742
- object-fit: contain;
743
- }
744
- /* Only watched: the cover keeps the pointer out of the live view. */
745
- .sc-browser__cover {
746
- position: absolute;
747
- inset: 0;
748
- }
749
- .sc-browser__caption {
750
- display: flex;
751
- min-height: calc(56px * var(--_density));
752
- align-items: center;
753
- gap: var(--_s8);
754
- padding: var(--_s8) var(--_s12);
755
- border-top: 1px solid var(--_line);
756
- font-size: var(--_fs-ui);
757
- line-height: 1.5;
758
- }
759
- .sc-browser__step {
760
- flex-shrink: 0;
761
- width: 16px;
762
- color: var(--_subtle);
763
- font-variant-numeric: tabular-nums;
764
- }
765
- .sc-browser__line {
766
- display: -webkit-box;
767
- min-width: 0;
768
- overflow: hidden;
769
- -webkit-box-orient: vertical;
770
- -webkit-line-clamp: 2;
771
- line-clamp: 2;
772
- animation: sc-fade-in 0.16s var(--_ease);
773
- }
774
- .sc-browser__ended {
775
- display: flex;
776
- width: 100%;
777
- height: 100%;
778
- overflow-y: auto;
779
- padding: var(--_s16) calc(24px * var(--_density));
780
- text-align: center;
781
- }
782
- .sc-browser__ended > div {
783
- margin: auto;
784
- }
785
- .sc-browser__ended-title {
786
- font-size: var(--_fs-ui);
787
- font-weight: 500;
788
- }
789
- .sc-browser__ended-summary {
790
- margin-top: var(--_s4);
791
- font-size: var(--_fs-ui);
792
- line-height: 1.625;
793
- color: var(--_muted);
794
- }
795
-
796
- /* --- A live stream ------------------------------------------------------------------------ */
797
-
798
- .sc-live {
799
- position: relative;
800
- width: 100%;
801
- overflow: hidden;
802
- border-radius: var(--_radius-md);
803
- background: var(--_sunken);
804
- }
805
- /* Sized by the stream's own shape (the canvas has its width and height), whatever the room. */
806
- .sc-live__canvas {
807
- display: block;
808
- width: 100%;
809
- height: auto;
810
- transition: opacity 0.3s var(--_ease);
811
- }
812
- .sc-live--input .sc-live__canvas {
813
- cursor: crosshair;
814
- }
815
- .sc-live--input .sc-live__canvas:focus-visible {
816
- outline-offset: -2px;
817
- }
818
- .sc-live--ended .sc-live__canvas,
819
- .sc-live--unavailable .sc-live__canvas {
820
- opacity: 0.5;
821
- }
822
- /* A word over a picture: its own dark ground, so it reads on whatever the stream shows. */
823
- .sc-live__status {
824
- position: absolute;
825
- bottom: var(--_s8);
826
- left: var(--_s8);
827
- display: flex;
828
- align-items: center;
829
- gap: var(--_s6);
830
- padding: var(--_s2) var(--_s8);
831
- border-radius: 9999px;
832
- background: rgb(0 0 0 / 0.6);
833
- color: rgb(255 255 255 / 0.9);
834
- font-size: var(--_fs-xs);
835
- line-height: 1.5;
836
- pointer-events: none;
837
- }
838
- .sc-live__dot {
839
- flex-shrink: 0;
840
- width: 6px;
841
- height: 6px;
842
- border-radius: 9999px;
843
- background: rgb(255 255 255 / 0.55);
844
- }
845
- .sc-live--live .sc-live__dot {
846
- background: var(--_ok);
847
- animation: sc-pulse 1.4s ease-in-out infinite;
848
- }
849
- .sc-live--connecting .sc-live__dot,
850
- .sc-live--reconnecting .sc-live__dot {
851
- background: var(--_signal);
852
- animation: sc-pulse 1.1s ease-in-out infinite;
853
- }
854
- /* In the browser's tile the stream sits in the page's 4:3 window, centred if its shape differs. */
855
- .sc-browser__screen > .sc-live {
856
- display: grid;
857
- height: 100%;
858
- place-items: center;
859
- border-radius: 0;
860
- }
861
-
862
- /* --- Requests: what the agent needs from the owner ------------------------------------------ */
863
-
864
- .sc-request {
865
- max-width: 35rem;
866
- container-type: inline-size;
867
- border: 1px solid var(--_line);
868
- border-radius: var(--_radius);
869
- background: var(--_surface);
870
- box-shadow: var(--_shadow-raised);
871
- transition: max-width 0.5s var(--_ease);
872
- animation: sc-rise 0.25s var(--_ease);
873
- }
874
- .sc-request--wide {
875
- max-width: 100%;
876
- }
877
- .sc-request__heading {
878
- display: flex;
879
- align-items: center;
880
- gap: var(--_s8);
881
- padding: var(--_s8) var(--_s16);
882
- border-bottom: 1px solid var(--_line);
883
- font-size: var(--_fs-xs);
884
- font-weight: 500;
885
- color: var(--_muted);
886
- }
887
- .sc-request__icon {
888
- color: var(--_accent);
889
- }
890
- .sc-request__body {
891
- display: flex;
892
- flex-direction: column;
893
- gap: var(--_s12);
894
- padding: var(--_s14) var(--_s16);
895
- }
896
- .sc-request__title {
897
- font-size: var(--_fs);
898
- font-weight: 500;
899
- line-height: 1.375;
900
- }
901
- .sc-request__details {
902
- font-size: var(--_fs-ui);
903
- line-height: 1.625;
904
- color: var(--_muted);
905
- }
906
- .sc-request__done {
907
- display: flex;
908
- align-items: center;
909
- gap: var(--_s6);
910
- font-size: var(--_fs-ui);
911
- color: var(--_ok);
912
- }
913
- .sc-request__check {
914
- width: 14px;
915
- height: 14px;
916
- }
917
- .sc-request__actions {
918
- display: flex;
919
- flex-wrap: wrap;
920
- gap: var(--_s8);
921
- }
922
- .sc-request__actions--center {
923
- align-items: center;
924
- }
925
- .sc-request__form {
926
- display: flex;
927
- flex-direction: column;
928
- gap: var(--_s8);
929
- }
930
- .sc-request__hint {
931
- font-size: var(--_fs-xs);
932
- color: var(--_subtle);
933
- }
934
- .sc-request__name {
935
- font-family: var(--_mono);
936
- font-size: var(--_fs-xs);
937
- color: var(--_subtle);
938
- }
939
-
940
- .sc-approval {
941
- display: flex;
942
- flex-direction: column;
943
- gap: var(--_s8);
944
- }
945
- .sc-calls {
946
- display: flex;
947
- flex-direction: column;
948
- gap: var(--_s4);
949
- font-size: var(--_fs-ui);
950
- }
951
- .sc-calls__item {
952
- display: flex;
953
- min-width: 0;
954
- gap: var(--_s8);
955
- }
956
- .sc-calls__label {
957
- flex-shrink: 0;
958
- font-weight: 500;
959
- }
960
- .sc-calls__summary {
961
- min-width: 0;
962
- overflow-wrap: break-word;
963
- color: var(--_muted);
964
- }
965
- .sc-preview-pairs {
966
- display: grid;
967
- grid-template-columns: auto 1fr;
968
- gap: var(--_s4) var(--_s12);
969
- font-size: var(--_fs-ui);
970
- }
971
- .sc-preview-pairs__row {
972
- display: contents;
973
- }
974
- .sc-preview-pairs__label {
975
- color: var(--_subtle);
976
- }
977
- .sc-preview-pairs__value {
978
- min-width: 0;
979
- overflow-wrap: break-word;
980
- }
981
- .sc-preview-table {
982
- overflow-x: auto;
983
- border: 1px solid var(--_line);
984
- border-radius: var(--_radius-md);
985
- }
986
- .sc-preview-table__table {
987
- width: 100%;
988
- font-size: var(--_fs-ui);
989
- }
990
- .sc-preview-table__table tr {
991
- border-bottom: 1px solid var(--_line);
992
- }
993
- .sc-preview-table__table tbody tr:last-child {
994
- border-bottom: 0;
995
- }
996
- .sc-preview-table__head,
997
- .sc-preview-table__cell {
998
- padding: var(--_s6) calc(10px * var(--_density));
999
- text-align: left;
1000
- }
1001
- .sc-preview-table__head {
1002
- font-weight: 500;
1003
- color: var(--_subtle);
1004
- }
1005
- .sc-preview-table__cell {
1006
- font-variant-numeric: tabular-nums;
1007
- }
1008
- .sc-preview-table__more {
1009
- padding: var(--_s6) calc(10px * var(--_density));
1010
- font-size: var(--_fs-xs);
1011
- color: var(--_subtle);
1012
- }
1013
- .sc-preview-json {
1014
- overflow-x: auto;
1015
- padding: var(--_s8) var(--_s12);
1016
- border-radius: var(--_radius-md);
1017
- background: var(--_sunken);
1018
- font-family: var(--_mono);
1019
- font-size: var(--_fs-xs);
1020
- }
1021
-
1022
- /* A hand-over: the browser, and what to do in it, side by side once the card is wide enough. */
1023
- .sc-handover {
1024
- display: grid;
1025
- gap: var(--_s12);
1026
- }
1027
- @container (min-width: 48rem) {
1028
- .sc-handover--steps {
1029
- grid-template-columns: minmax(0, 1fr) 18rem;
1030
- gap: var(--_s20);
1031
- }
1032
- }
1033
- .sc-handover__side {
1034
- display: flex;
1035
- flex-direction: column;
1036
- gap: var(--_s12);
1037
- }
1038
- .sc-steps {
1039
- display: flex;
1040
- flex-direction: column;
1041
- gap: var(--_s10);
1042
- }
1043
- .sc-steps__item {
1044
- display: flex;
1045
- align-items: flex-start;
1046
- gap: var(--_s10);
1047
- font-size: var(--_fs-ui);
1048
- line-height: 1.375;
1049
- }
1050
- .sc-steps__number {
1051
- display: grid;
1052
- flex-shrink: 0;
1053
- place-items: center;
1054
- width: 24px;
1055
- height: 24px;
1056
- border-radius: 9999px;
1057
- background: var(--_accent);
1058
- font-size: var(--_fs-xs);
1059
- font-weight: 500;
1060
- color: var(--_accent-fg);
1061
- font-variant-numeric: tabular-nums;
1062
- }
1063
- .sc-steps__text {
1064
- padding-top: var(--_s2);
1065
- }
1066
-
1067
- .sc-drop {
1068
- display: flex;
1069
- flex-direction: column;
1070
- align-items: center;
1071
- gap: var(--_s4);
1072
- padding: var(--_s16) var(--_s12);
1073
- border: 1px dashed var(--_line-strong);
1074
- border-radius: var(--_radius);
1075
- font-size: var(--_fs-ui);
1076
- color: var(--_muted);
1077
- text-align: center;
1078
- cursor: pointer;
1079
- transition: border-color 0.15s;
1080
- }
1081
- .sc-drop:hover {
1082
- border-color: color-mix(in srgb, var(--_text) 30%, transparent);
1083
- }
1084
- .sc-drop--busy {
1085
- opacity: 0.6;
1086
- pointer-events: none;
1087
- }
1088
- .sc-drop__icon {
1089
- color: var(--_subtle);
1090
- }
1091
-
1092
- .sc-app-button {
1093
- display: inline-flex;
1094
- align-items: center;
1095
- gap: var(--_s10);
1096
- height: calc(36px * var(--_density));
1097
- padding: 0 var(--_s12);
1098
- border-radius: var(--_radius);
1099
- background: var(--_surface);
1100
- box-shadow:
1101
- var(--_shadow-button),
1102
- 0 0 0 1px var(--_line);
1103
- font-size: var(--_fs-ui);
1104
- font-weight: 500;
1105
- line-height: 1.5;
1106
- letter-spacing: -0.01em;
1107
- white-space: nowrap;
1108
- user-select: none;
1109
- transition:
1110
- background-color 0.15s,
1111
- transform 0.15s;
1112
- }
1113
- .sc-app-button:hover:not(:disabled) {
1114
- background: var(--_sunken);
1115
- }
1116
- .sc-app-button:active:not(:disabled) {
1117
- transform: scale(0.985);
1118
- }
1119
- .sc-app-button:disabled {
1120
- cursor: not-allowed;
1121
- opacity: 0.6;
1122
- }
1123
- .sc-app-button__logo {
1124
- position: relative;
1125
- display: grid;
1126
- flex-shrink: 0;
1127
- place-items: center;
1128
- }
1129
- .sc-app-button__ping {
1130
- position: absolute;
1131
- top: -2px;
1132
- right: -2px;
1133
- width: 10px;
1134
- height: 10px;
1135
- border-radius: 9999px;
1136
- background: var(--_ok);
1137
- box-shadow: 0 0 0 2px var(--_surface);
1138
- animation: sc-ping 1.4s cubic-bezier(0, 0, 0.2, 1) infinite;
1139
- }
1140
- .sc-app-logo {
1141
- display: grid;
1142
- flex-shrink: 0;
1143
- place-items: center;
1144
- overflow: hidden;
1145
- border-radius: 28%;
1146
- background: var(--_sunken);
1147
- font-weight: 600;
1148
- color: var(--_muted);
1149
- }
1150
- .sc-app-logo:has(img) {
1151
- background: #ffffff;
1152
- }
1153
- .sc-app-logo img {
1154
- width: 72%;
1155
- height: 72%;
1156
- object-fit: contain;
1157
- }
1158
-
1159
- /* --- The chat: messages, and the box to write in --------------------------------------- */
1160
-
1161
- .sc-chat {
1162
- display: flex;
1163
- flex-direction: column;
1164
- height: 100%;
1165
- min-height: 0;
1166
- }
1167
- .sc-chat__scroll {
1168
- flex: 1;
1169
- min-height: 0;
1170
- overflow-y: auto;
1171
- overscroll-behavior: contain;
1172
- }
1173
- .sc-chat__content {
1174
- display: flex;
1175
- flex-direction: column;
1176
- gap: var(--_s8);
1177
- padding: var(--_s16) var(--_s16) var(--_s12);
1178
- }
1179
- .sc-chat__note,
1180
- .sc-chat__status {
1181
- display: flex;
1182
- align-items: center;
1183
- gap: var(--_s8);
1184
- font-size: var(--_fs-xs);
1185
- color: var(--_subtle);
1186
- }
1187
- .sc-chat__status:empty {
1188
- display: none;
1189
- }
1190
- .sc-messages {
1191
- display: flex;
1192
- flex-direction: column;
1193
- gap: var(--_s10);
1194
- }
1195
- /* The time a stretch of the conversation began: quiet, in the middle. */
1196
- .sc-moment {
1197
- align-self: center;
1198
- font-size: var(--_fs-xs);
1199
- color: var(--_subtle);
1200
- font-variant-numeric: tabular-nums;
1201
- }
1202
- .sc-message {
1203
- display: flex;
1204
- flex-direction: column;
1205
- gap: var(--_s8);
1206
- max-width: 88%;
1207
- animation: sc-rise 0.2s var(--_ease);
1208
- }
1209
- /* The same side again: close to the message before it. */
1210
- .sc-message--joined {
1211
- margin-top: calc(var(--_s2) - var(--_s10));
1212
- }
1213
- .sc-message--person {
1214
- align-self: flex-end;
1215
- align-items: flex-end;
1216
- }
1217
- .sc-message--agent {
1218
- align-self: flex-start;
1219
- align-items: flex-start;
1220
- }
1221
- /* What the agent drew needs the room: it takes the whole line. */
1222
- .sc-message--agent:has(.sc-message__surface) {
1223
- align-self: stretch;
1224
- max-width: 100%;
1225
- }
1226
- .sc-message__text {
1227
- padding: var(--_s8) var(--_s12);
1228
- border-radius: var(--_radius);
1229
- line-height: 1.5;
1230
- overflow-wrap: anywhere;
1231
- white-space: pre-wrap;
1232
- }
1233
- .sc-message--person .sc-message__text {
1234
- border-bottom-right-radius: var(--_radius-sm);
1235
- background: var(--_accent);
1236
- color: var(--_accent-fg);
1237
- }
1238
- .sc-message--agent .sc-message__text {
1239
- border-bottom-left-radius: var(--_radius-sm);
1240
- background: var(--_sunken);
1241
- }
1242
- .sc-message__surface {
1243
- width: 100%;
1244
- }
1245
- /* Where a surface went, when the agent placed it in a window of the shell instead. */
1246
- .sc-message__window {
1247
- font-size: var(--_fs-ui);
1248
- line-height: 1.5;
1249
- color: var(--_muted);
1250
- }
1251
- .sc-message__open {
1252
- font-weight: 500;
1253
- color: var(--_accent);
1254
- text-underline-offset: 2px;
1255
- }
1256
- .sc-message__open:hover {
1257
- text-decoration: underline;
1258
- }
1259
-
1260
- .sc-composer {
1261
- flex-shrink: 0;
1262
- padding: var(--_s8) var(--_s12) var(--_s12);
1263
- }
1264
- .sc-composer__context {
1265
- margin-bottom: var(--_s6);
1266
- }
1267
- .sc-composer__box {
1268
- display: flex;
1269
- flex-direction: column;
1270
- gap: var(--_s4);
1271
- padding: var(--_s8) var(--_s8) var(--_s8) var(--_s12);
1272
- border: 1px solid var(--_line-strong);
1273
- border-radius: var(--_radius);
1274
- background: var(--_surface);
1275
- box-shadow: var(--_shadow-raised);
1276
- cursor: text;
1277
- transition:
1278
- border-color 0.15s,
1279
- box-shadow 0.15s;
1280
- }
1281
- .sc-composer__box:focus-within {
1282
- border-color: var(--_accent);
1283
- box-shadow:
1284
- var(--_shadow-raised),
1285
- 0 0 0 2px var(--_focus);
1286
- }
1287
- .sc-composer__input {
1288
- width: 100%;
1289
- min-height: calc(24px * var(--_density));
1290
- max-height: 200px;
1291
- padding: 0;
1292
- border: 0;
1293
- background: transparent;
1294
- line-height: 1.5;
1295
- color: var(--_text);
1296
- resize: none;
1297
- }
1298
- .sc-composer__input::placeholder {
1299
- color: var(--_subtle);
1300
- }
1301
- .sc-composer__input:focus {
1302
- outline: none;
1303
- }
1304
- .sc-composer__bar {
1305
- display: flex;
1306
- align-items: center;
1307
- gap: var(--_s4);
1308
- }
1309
- .sc-composer__tools {
1310
- display: flex;
1311
- min-width: 0;
1312
- flex: 1;
1313
- align-items: center;
1314
- gap: var(--_s2);
1315
- }
1316
- .sc-composer__send {
1317
- display: grid;
1318
- flex-shrink: 0;
1319
- place-items: center;
1320
- width: calc(28px * var(--_density));
1321
- height: calc(28px * var(--_density));
1322
- border-radius: 9999px;
1323
- background: var(--_accent);
1324
- color: var(--_accent-fg);
1325
- transition:
1326
- background-color 0.15s,
1327
- opacity 0.15s;
1328
- }
1329
- .sc-composer__send:hover:not(:disabled) {
1330
- background: color-mix(in srgb, var(--_accent) 92%, transparent);
1331
- }
1332
- .sc-composer__send:disabled {
1333
- background: var(--_sunken);
1334
- color: var(--_subtle);
1335
- cursor: not-allowed;
1336
- }
1337
-
1338
- /* --- The chat with the builder: what it says, does and changed --------------------------- */
1339
-
1340
- .sc-chat__note--invitation {
1341
- flex-direction: column;
1342
- align-items: flex-start;
1343
- gap: var(--_s6);
1344
- padding-block: var(--_s20) var(--_s8);
1345
- font-size: var(--_fs-ui);
1346
- line-height: 1.5;
1347
- color: var(--_muted);
1348
- }
1349
- .sc-chat__note--invitation strong {
1350
- font-size: var(--_fs-md);
1351
- font-weight: 600;
1352
- color: var(--_text);
1353
- }
1354
-
1355
- .sc-transcript {
1356
- display: flex;
1357
- flex-direction: column;
1358
- gap: var(--_s16);
1359
- }
1360
- .sc-reply {
1361
- line-height: 1.625;
1362
- overflow-wrap: anywhere;
1363
- white-space: pre-wrap;
1364
- }
1365
- .sc-reply__cursor {
1366
- display: inline-block;
1367
- width: 2px;
1368
- height: 1.05em;
1369
- margin-left: 2px;
1370
- vertical-align: -0.15em;
1371
- background: var(--_signal);
1372
- animation: sc-pulse 1.1s ease-in-out infinite;
1373
- }
1374
-
1375
- .sc-activity {
1376
- display: flex;
1377
- flex-direction: column;
1378
- }
1379
- .sc-activity__toggle {
1380
- display: flex;
1381
- width: 100%;
1382
- min-width: 0;
1383
- align-items: center;
1384
- gap: var(--_s10);
1385
- padding: var(--_s4) 0;
1386
- border-radius: var(--_radius-sm);
1387
- font-size: var(--_fs-ui);
1388
- text-align: left;
1389
- }
1390
- .sc-activity__toggle:is(button) {
1391
- cursor: pointer;
1392
- }
1393
- .sc-activity__toggle:is(button):hover {
1394
- background: var(--_sunken);
1395
- }
1396
- .sc-activity__mark {
1397
- display: grid;
1398
- flex-shrink: 0;
1399
- place-items: center;
1400
- width: 20px;
1401
- height: 20px;
1402
- color: var(--_subtle);
1403
- }
1404
- .sc-activity__mark--running {
1405
- color: var(--_signal);
1406
- }
1407
- .sc-activity__mark--error {
1408
- color: var(--_danger);
1409
- }
1410
- .sc-activity__verb {
1411
- flex-shrink: 0;
1412
- font-weight: 500;
1413
- }
1414
- .sc-activity__step--error .sc-activity__verb {
1415
- color: var(--_danger);
1416
- }
1417
- .sc-activity__target {
1418
- min-width: 0;
1419
- overflow: hidden;
1420
- color: var(--_muted);
1421
- text-overflow: ellipsis;
1422
- white-space: nowrap;
1423
- }
1424
- .sc-activity__target--code {
1425
- font-family: var(--_mono);
1426
- font-size: var(--_fs-xs);
1427
- }
1428
- .sc-activity__target--struck {
1429
- text-decoration: line-through;
1430
- }
1431
- .sc-activity__note {
1432
- flex-shrink: 0;
1433
- font-size: var(--_fs-xs);
1434
- color: var(--_subtle);
1435
- }
1436
- .sc-activity__note--danger {
1437
- color: var(--_danger);
1438
- }
1439
- .sc-activity__summary {
1440
- max-height: 14rem;
1441
- margin: var(--_s4) 0 var(--_s8) 30px;
1442
- padding: var(--_s8) var(--_s12);
1443
- overflow: auto;
1444
- border: 1px solid var(--_line);
1445
- border-radius: var(--_radius-md);
1446
- background: var(--_sunken);
1447
- font-family: var(--_mono);
1448
- font-size: var(--_fs-xs);
1449
- line-height: 1.5;
1450
- color: var(--_muted);
1451
- white-space: pre-wrap;
1452
- }
1453
-
1454
- .sc-note {
1455
- display: flex;
1456
- align-items: center;
1457
- gap: var(--_s8);
1458
- font-size: var(--_fs-ui);
1459
- color: var(--_muted);
1460
- }
1461
- .sc-note strong {
1462
- font-weight: 500;
1463
- color: var(--_text);
1464
- }
1465
- .sc-note--ok .sc-icon {
1466
- color: var(--_ok);
1467
- }
1468
-
1469
- .sc-changes {
1470
- padding: var(--_s10) var(--_s14);
1471
- border: 1px solid var(--_line);
1472
- border-radius: var(--_radius);
1473
- background: var(--_surface);
1474
- }
1475
- .sc-changes__title {
1476
- font-size: var(--_fs-xs);
1477
- font-weight: 500;
1478
- color: var(--_subtle);
1479
- }
1480
- .sc-changes__list {
1481
- display: flex;
1482
- flex-direction: column;
1483
- gap: var(--_s4);
1484
- margin-top: var(--_s6);
1485
- }
1486
- .sc-changes__item {
1487
- font-size: var(--_fs-ui);
1488
- }
1489
- .sc-changes__label {
1490
- color: var(--_muted);
1491
- }
1492
- .sc-changes__item--added .sc-changes__label {
1493
- color: var(--_ok);
1494
- }
1495
- .sc-changes__item--removed .sc-changes__label {
1496
- color: var(--_danger);
1497
- }
1498
- .sc-changes__item--changed .sc-changes__label,
1499
- .sc-changes__item--learned .sc-changes__label {
1500
- color: var(--_accent);
1501
- }
1502
- .sc-changes__more {
1503
- margin-top: var(--_s4);
1504
- font-size: var(--_fs-xs);
1505
- color: var(--_subtle);
1506
- }
1507
- .sc-changes__more:hover {
1508
- color: var(--_text);
1509
- }
1510
-
1511
- .sc-status-line {
1512
- display: flex;
1513
- align-items: center;
1514
- gap: var(--_s8);
1515
- padding: 0 var(--_s16) var(--_s4);
1516
- font-size: var(--_fs-xs);
1517
- font-variant-numeric: tabular-nums;
1518
- color: var(--_subtle);
1519
- }
1520
- .sc-status-line:empty {
1521
- display: none;
1522
- }
1523
- .sc-status-line__dot {
1524
- flex-shrink: 0;
1525
- width: 6px;
1526
- height: 6px;
1527
- border-radius: 9999px;
1528
- background: var(--_signal);
1529
- animation: sc-pulse 1.4s ease-in-out infinite;
1530
- }
1531
- .sc-status-line__hint {
1532
- margin-left: auto;
1533
- }
1534
- .sc-status-line kbd {
1535
- font: inherit;
1536
- }
1537
- @media (max-width: 639px) {
1538
- .sc-status-line__hint {
1539
- display: none;
1540
- }
1541
- }
1542
-
1543
- /* --- The windows of an agent: a state in words, and the map -------------------------------- */
1544
-
1545
- /* A state: a dot of its color and the word, so the color is never the whole message. */
1546
- .sc-status {
1547
- display: inline-flex;
1548
- flex-shrink: 0;
1549
- align-items: center;
1550
- gap: var(--_s6);
1551
- font-size: var(--_fs-xs);
1552
- white-space: nowrap;
1553
- color: var(--_muted);
1554
- }
1555
- .sc-status--signal {
1556
- color: var(--_signal);
1557
- }
1558
- .sc-status--danger {
1559
- color: var(--_danger);
1560
- }
1561
- .sc-status--neutral {
1562
- color: var(--_subtle);
1563
- }
1564
- .sc-status__dot {
1565
- flex-shrink: 0;
1566
- width: 6px;
1567
- height: 6px;
1568
- border-radius: 9999px;
1569
- background: var(--_line-strong);
1570
- }
1571
- .sc-status__dot--ok {
1572
- background: var(--_ok);
1573
- }
1574
- .sc-status__dot--signal {
1575
- background: var(--_signal);
1576
- }
1577
- .sc-status__dot--danger {
1578
- background: var(--_danger);
1579
- }
1580
- /* Something is happening right now. */
1581
- .sc-status--live .sc-status__dot {
1582
- animation: sc-pulse 1.4s ease-in-out infinite;
1583
- }
1584
-
1585
- /* What the agent does: its channels and automations, as rows that open. */
1586
- .sc-automations {
1587
- display: flex;
1588
- flex-direction: column;
1589
- gap: calc(24px * var(--_density));
1590
- }
1591
- .sc-automations__title {
1592
- padding: 0 var(--_s8) var(--_s4);
1593
- font-size: calc(var(--_fs) * 11 / 14);
1594
- font-weight: 500;
1595
- color: var(--_subtle);
1596
- }
1597
- .sc-automations__item + .sc-automations__item {
1598
- border-top: 1px solid var(--_line);
1599
- }
1600
- .sc-automations__empty {
1601
- padding: var(--_s8);
1602
- font-size: var(--_fs-xs);
1603
- line-height: 1.5;
1604
- color: var(--_muted);
1605
- }
1606
- /* What a window says instead of itself: that it is loading, or could not be. */
1607
- .sc-automations > .sc-note,
1608
- .sc-automations > .sc-error,
1609
- .sc-flow > .sc-note,
1610
- .sc-flow > .sc-error {
1611
- padding: var(--_s16);
1612
- }
1613
-
1614
- .sc-automation {
1615
- position: relative;
1616
- }
1617
- /* The part the builder just touched: a wash of the signal color that fades, once. */
1618
- .sc-automation__wash {
1619
- position: absolute;
1620
- inset: 0;
1621
- border-radius: var(--_radius-md);
1622
- pointer-events: none;
1623
- animation: sc-wash 1.8s var(--_ease) both;
1624
- }
1625
- .sc-automation__head {
1626
- display: flex;
1627
- align-items: flex-start;
1628
- gap: var(--_s12);
1629
- width: 100%;
1630
- min-height: calc(44px * var(--_density));
1631
- padding: var(--_s8);
1632
- border-radius: var(--_radius-md);
1633
- text-align: left;
1634
- transition: background-color 0.15s;
1635
- }
1636
- .sc-automation__head:hover {
1637
- background: var(--_sunken);
1638
- }
1639
- .sc-automation__head:focus-visible {
1640
- outline-offset: -2px;
1641
- }
1642
- .sc-automation__tile {
1643
- display: grid;
1644
- flex-shrink: 0;
1645
- place-items: center;
1646
- width: 26px;
1647
- height: 26px;
1648
- border-radius: var(--_radius-sm);
1649
- background: var(--_accent-soft);
1650
- color: var(--_accent);
1651
- }
1652
- .sc-automation__tile--signal {
1653
- background: var(--_signal-soft);
1654
- color: var(--_signal);
1655
- }
1656
- /* A logo has its own ground. */
1657
- .sc-automation__tile--mark {
1658
- background: none;
1659
- }
1660
- .sc-automation__tile--building {
1661
- animation: sc-pulse 1.4s ease-in-out infinite;
1662
- }
1663
- .sc-automation__glyph {
1664
- width: 14px;
1665
- height: 14px;
1666
- }
1667
- .sc-automation__text {
1668
- display: flex;
1669
- flex: 1;
1670
- flex-direction: column;
1671
- min-width: 0;
1672
- }
1673
- .sc-automation__line {
1674
- display: flex;
1675
- align-items: center;
1676
- gap: var(--_s12);
1677
- min-height: 26px;
1678
- }
1679
- .sc-automation__title {
1680
- overflow: hidden;
1681
- text-overflow: ellipsis;
1682
- white-space: nowrap;
1683
- font-size: var(--_fs-ui);
1684
- font-weight: 500;
1685
- line-height: 1.375;
1686
- }
1687
- .sc-automation__status {
1688
- flex-shrink: 0;
1689
- margin-left: auto;
1690
- }
1691
- .sc-automation__tagline {
1692
- display: flex;
1693
- flex-wrap: wrap;
1694
- align-items: center;
1695
- gap: var(--_s4) var(--_s8);
1696
- margin-top: -2px;
1697
- font-size: var(--_fs-xs);
1698
- color: var(--_muted);
1699
- }
1700
- .sc-automation__meta {
1701
- margin-top: var(--_s4);
1702
- font-size: var(--_fs-xs);
1703
- }
1704
- .sc-automation__chevron {
1705
- flex-shrink: 0;
1706
- width: 14px;
1707
- height: 14px;
1708
- margin-top: 6px;
1709
- color: var(--_subtle);
1710
- opacity: 0;
1711
- transition:
1712
- opacity 0.15s,
1713
- transform 0.15s;
1714
- }
1715
- .sc-automation__head:hover .sc-automation__chevron,
1716
- .sc-automation__head:focus-visible .sc-automation__chevron,
1717
- .sc-automation--open .sc-automation__chevron {
1718
- opacity: 1;
1719
- }
1720
- .sc-automation--open .sc-automation__chevron {
1721
- transform: rotate(180deg);
1722
- }
1723
- /* Under the tile and the text, aligned with the title. */
1724
- .sc-automation__body {
1725
- display: flex;
1726
- flex-direction: column;
1727
- gap: var(--_s12);
1728
- padding: 0 var(--_s8) var(--_s12) calc(var(--_s8) + 26px + var(--_s12));
1729
- font-size: var(--_fs-xs);
1730
- line-height: 1.5;
1731
- animation: sc-fade-in 0.2s var(--_ease);
1732
- }
1733
- .sc-automation__description {
1734
- max-width: 65ch;
1735
- color: var(--_muted);
1736
- }
1737
- .sc-automation__facts {
1738
- display: grid;
1739
- grid-template-columns: auto minmax(0, 1fr);
1740
- gap: var(--_s4) var(--_s16);
1741
- }
1742
- .sc-automation__fact {
1743
- display: contents;
1744
- }
1745
- .sc-automation__label {
1746
- color: var(--_subtle);
1747
- }
1748
- .sc-automation__activity {
1749
- color: var(--_subtle);
1750
- }
1751
- .sc-automation__activity--failed {
1752
- color: var(--_danger);
1753
- }
1754
- .sc-automation__tips {
1755
- display: flex;
1756
- flex-direction: column;
1757
- gap: var(--_s2);
1758
- color: var(--_subtle);
1759
- }
1760
- .sc-automation__actions {
1761
- display: flex;
1762
- flex-wrap: wrap;
1763
- gap: var(--_s6);
1764
- }
1765
-
1766
- /* When it runs: the days of the week with the ones it works on marked, and the time. */
1767
- .sc-schedule {
1768
- display: inline-flex;
1769
- align-items: center;
1770
- gap: var(--_s8);
1771
- }
1772
- .sc-schedule__days {
1773
- display: inline-flex;
1774
- align-items: center;
1775
- gap: var(--_s2);
1776
- }
1777
- .sc-schedule__day {
1778
- display: grid;
1779
- place-items: center;
1780
- width: 18px;
1781
- height: 18px;
1782
- border-radius: 9999px;
1783
- font-size: calc(var(--_fs) * 11 / 14);
1784
- font-weight: 500;
1785
- line-height: 1;
1786
- color: color-mix(in srgb, var(--_subtle) 70%, transparent);
1787
- }
1788
- .sc-schedule__day--on {
1789
- background: var(--_accent-soft);
1790
- color: var(--_accent);
1791
- }
1792
- .sc-schedule--signal .sc-schedule__day--on {
1793
- background: var(--_signal-soft);
1794
- color: var(--_signal);
1795
- }
1796
- .sc-schedule__day--today {
1797
- box-shadow: 0 0 0 1px color-mix(in srgb, currentColor 30%, transparent);
1798
- }
1799
- .sc-schedule__time {
1800
- font-size: var(--_fs-xs);
1801
- font-weight: 500;
1802
- font-variant-numeric: tabular-nums;
1803
- }
1804
-
1805
- /* The apps a part uses; dimmed until they are connected. */
1806
- .sc-app-marks {
1807
- display: inline-flex;
1808
- flex-wrap: wrap;
1809
- align-items: center;
1810
- gap: var(--_s4) var(--_s8);
1811
- }
1812
- .sc-app-marks__item {
1813
- display: inline-flex;
1814
- align-items: center;
1815
- gap: var(--_s4);
1816
- }
1817
- .sc-app-marks__item--off {
1818
- color: var(--_subtle);
1819
- }
1820
-
1821
- /*
1822
- * The agent as a map. The graph library sets what it needs to work in its own stylesheet and
1823
- * reads its look from custom properties, which are set here from the tokens (the names without
1824
- * "-default" are the ones a host may set).
1825
- */
1826
- .sc-flow {
1827
- position: relative;
1828
- width: 100%;
1829
- height: 100%;
1830
- min-height: 20rem;
1831
- }
1832
- .sc-flow .react-flow {
1833
- --xy-background-color: transparent;
1834
- --xy-background-pattern-color: var(--_line-strong);
1835
- --xy-edge-stroke: var(--_line-strong);
1836
- --xy-edge-stroke-width: 1.25;
1837
- --xy-edge-stroke-selected: var(--_muted);
1838
- }
1839
- .sc-flow .react-flow__edge-textbg {
1840
- fill: var(--_surface);
1841
- stroke: var(--_line);
1842
- rx: 6;
1843
- }
1844
- .sc-flow .react-flow__edge-text {
1845
- fill: var(--_muted);
1846
- font-size: calc(var(--_fs) * 11 / 14);
1847
- }
1848
- .sc-flow .react-flow__controls {
1849
- overflow: hidden;
1850
- border: 1px solid var(--_line);
1851
- border-radius: var(--_radius-md);
1852
- box-shadow: var(--_shadow-raised);
1853
- }
1854
- .sc-flow .react-flow__controls-button {
1855
- border-bottom: 1px solid var(--_line);
1856
- background: var(--_face);
1857
- color: var(--_muted);
1858
- cursor: pointer;
1859
- }
1860
- .sc-flow .react-flow__controls-button:last-child {
1861
- border-bottom: 0;
1862
- }
1863
- .sc-flow .react-flow__controls-button:hover {
1864
- background: var(--_face-hover);
1865
- color: var(--_text);
1866
- }
1867
- .sc-flow__empty {
1868
- padding: calc(64px * var(--_density)) calc(24px * var(--_density));
1869
- font-size: var(--_fs-ui);
1870
- line-height: 1.625;
1871
- text-align: center;
1872
- color: var(--_muted);
1873
- }
1874
- /* Its width and height are the layout's (NODE_W, NODE_H), set on the element itself. */
1875
- .sc-flow__node {
1876
- display: flex;
1877
- align-items: center;
1878
- gap: var(--_s10);
1879
- padding: 0 var(--_s12);
1880
- border: 1px solid var(--_line);
1881
- border-radius: var(--_radius);
1882
- background: var(--_surface);
1883
- box-shadow: var(--_shadow-raised);
1884
- color: var(--_text);
1885
- }
1886
- .sc-flow__node--strong {
1887
- border-color: var(--_line-strong);
1888
- }
1889
- .sc-flow__node--selected {
1890
- outline: 2px solid var(--_accent);
1891
- outline-offset: 2px;
1892
- }
1893
- .sc-flow__handle {
1894
- opacity: 0;
1895
- }
1896
- .sc-flow__mark {
1897
- display: grid;
1898
- flex-shrink: 0;
1899
- place-items: center;
1900
- width: 32px;
1901
- height: 32px;
1902
- border-radius: var(--_radius-md);
1903
- background: var(--_sunken);
1904
- color: var(--_muted);
1905
- }
1906
- .sc-flow__mark--strong {
1907
- background: var(--_signal-soft);
1908
- color: var(--_signal);
1909
- }
1910
- .sc-flow__glyph {
1911
- width: 16px;
1912
- height: 16px;
1913
- }
1914
- .sc-flow__text {
1915
- display: flex;
1916
- flex: 1;
1917
- flex-direction: column;
1918
- min-width: 0;
1919
- }
1920
- .sc-flow__name,
1921
- .sc-flow__detail {
1922
- overflow: hidden;
1923
- text-overflow: ellipsis;
1924
- white-space: nowrap;
1925
- }
1926
- .sc-flow__name {
1927
- font-size: var(--_fs-xs);
1928
- font-weight: 500;
1929
- line-height: 1.375;
1930
- }
1931
- .sc-flow__detail {
1932
- font-size: calc(var(--_fs) * 11 / 14);
1933
- color: var(--_subtle);
1934
- }
1935
- .sc-flow__trigger {
1936
- font-family: var(--_mono);
1937
- color: var(--_muted);
1938
- }
1939
-
1940
- /* --- The orb: the voice window's shape, still when the person asked for less motion -------- */
1941
-
1942
- .sc-orb {
1943
- /* At rest the accent worn down to gray; the person is the accent, the agent the signal. */
1944
- --_orb: color-mix(in srgb, var(--_accent) 40%, rgb(150 150 150));
1945
- position: relative;
1946
- display: grid;
1947
- flex-shrink: 0;
1948
- place-items: center;
1949
- }
1950
- .sc-orb--listening {
1951
- --_orb: var(--_accent);
1952
- }
1953
- .sc-orb--thinking,
1954
- .sc-orb--speaking {
1955
- --_orb: var(--_signal);
1956
- }
1957
- /* Not drawn by the library: a disc in a ring, and the ring's outline tells the state. */
1958
- .sc-orb__core,
1959
- .sc-orb__ring {
1960
- grid-area: 1 / 1;
1961
- aspect-ratio: 1;
1962
- border-radius: 9999px;
1963
- }
1964
- .sc-orb__core {
1965
- width: 55%;
1966
- background: var(--_orb);
1967
- }
1968
- .sc-orb__ring {
1969
- width: 80%;
1970
- border: 1px solid color-mix(in srgb, var(--_orb) 45%, transparent);
1971
- }
1972
- .sc-orb--listening .sc-orb__ring {
1973
- border: 3px solid var(--_orb);
1974
- }
1975
- .sc-orb--thinking .sc-orb__ring {
1976
- border: 3px dashed var(--_orb);
1977
- }
1978
- .sc-orb--speaking .sc-orb__ring {
1979
- border: 3px solid var(--_orb);
1980
- outline: 2px solid var(--_orb);
1981
- outline-offset: 6px;
1982
- }
1983
-
1984
- /* --- The voice window: the orb, what it is doing in words, and what was said ---------------- */
1985
-
1986
- .sc-voice {
1987
- display: flex;
1988
- flex-direction: column;
1989
- align-items: center;
1990
- justify-content: center;
1991
- gap: var(--_s12);
1992
- min-height: 100%;
1993
- padding: var(--_s20) var(--_s16);
1994
- text-align: center;
1995
- }
1996
- .sc-voice__stage {
1997
- display: grid;
1998
- place-items: center;
1999
- }
2000
- .sc-voice__state {
2001
- font-size: var(--_fs-md);
2002
- font-weight: 500;
2003
- }
2004
- .sc-voice--idle .sc-voice__state,
2005
- .sc-voice--muted .sc-voice__state {
2006
- color: var(--_muted);
2007
- }
2008
- .sc-voice__captions {
2009
- display: flex;
2010
- flex-direction: column;
2011
- gap: var(--_s10);
2012
- width: 100%;
2013
- max-width: 34rem;
2014
- }
2015
- .sc-voice__captions:empty {
2016
- display: none;
2017
- }
2018
- .sc-voice__line {
2019
- line-height: 1.5;
2020
- overflow-wrap: anywhere;
2021
- white-space: pre-wrap;
2022
- }
2023
- .sc-voice__line--person {
2024
- font-size: var(--_fs-ui);
2025
- color: var(--_muted);
2026
- }
2027
- .sc-voice__line--agent {
2028
- font-size: var(--_fs-md);
2029
- animation: sc-rise 0.2s var(--_ease);
2030
- }
2031
- .sc-voice__who {
2032
- display: block;
2033
- font-size: var(--_fs-xs);
2034
- color: var(--_subtle);
2035
- }
2036
- .sc-voice__note {
2037
- max-width: 28rem;
2038
- font-size: var(--_fs-ui);
2039
- line-height: 1.5;
2040
- color: var(--_muted);
2041
- }
2042
- .sc-voice__controls {
2043
- display: flex;
2044
- align-items: center;
2045
- justify-content: center;
2046
- gap: var(--_s8);
2047
- }
2048
-
2049
- /* --- A window of the shell: its bar, and the room for what it holds ---------------------- */
2050
-
2051
- .sc-window {
2052
- display: flex;
2053
- flex-direction: column;
2054
- min-width: 0;
2055
- height: 100%;
2056
- min-height: 0;
2057
- }
2058
- .sc-window__bar {
2059
- display: flex;
2060
- flex-shrink: 0;
2061
- align-items: center;
2062
- gap: var(--_s8);
2063
- min-height: calc(40px * var(--_density));
2064
- padding: 0 var(--_s8) 0 var(--_s14);
2065
- border-bottom: 1px solid var(--_line);
2066
- }
2067
- .sc-window__mark {
2068
- flex-shrink: 0;
2069
- width: 16px;
2070
- height: 16px;
2071
- color: var(--_subtle);
2072
- }
2073
- .sc-window__title {
2074
- min-width: 0;
2075
- flex: 1;
2076
- margin: 0;
2077
- overflow: hidden;
2078
- font-size: var(--_fs);
2079
- font-weight: 500;
2080
- text-overflow: ellipsis;
2081
- white-space: nowrap;
2082
- }
2083
- /* The window scrolls inside; the bar stays. */
2084
- .sc-window__body {
2085
- min-height: 0;
2086
- flex: 1;
2087
- overflow: auto;
2088
- overscroll-behavior: contain;
2089
- }
2090
- /* A surface in a window has a page to itself: it gets the room, not a card's width. */
2091
- .sc-window--surface > .sc-window__body {
2092
- padding: var(--_s16);
2093
- }
2094
- /* What a window says when nothing here draws it: its words. */
2095
- .sc-window__twin {
2096
- max-width: 40rem;
2097
- padding: var(--_s16);
2098
- line-height: 1.625;
2099
- white-space: pre-wrap;
2100
- color: var(--_muted);
2101
- }
2102
-
2103
- /* The conversation when the person listens: only the last words, quiet and in the middle. */
2104
- .sc-captions {
2105
- display: flex;
2106
- flex-direction: column;
2107
- justify-content: center;
2108
- gap: var(--_s12);
2109
- height: 100%;
2110
- padding: var(--_s20) var(--_s16);
2111
- text-align: center;
2112
- }
2113
- .sc-captions__line {
2114
- line-height: 1.5;
2115
- overflow-wrap: anywhere;
2116
- white-space: pre-wrap;
2117
- }
2118
- .sc-captions__line--person {
2119
- font-size: var(--_fs-ui);
2120
- color: var(--_muted);
2121
- }
2122
- .sc-captions__line--agent {
2123
- font-size: var(--_fs-md);
2124
- animation: sc-rise 0.2s var(--_ease);
2125
- }
2126
-
2127
- /* --- The shell: the strip of open windows, the stage, and the dock to talk from ---------- */
2128
-
2129
- /*
2130
- * The shell answers to its own width, not the page's: a widget in a narrow column of a wide
2131
- * page is narrow. Under 720px the strip becomes tabs and the stage takes the width.
2132
- */
2133
- .sc-space {
2134
- container-type: inline-size;
2135
- display: flex;
2136
- flex-direction: column;
2137
- width: 100%;
2138
- height: 100%;
2139
- min-height: 0;
2140
- }
2141
- .sc-space__main {
2142
- display: grid;
2143
- grid-template-columns: minmax(10rem, 13rem) minmax(0, 1fr);
2144
- flex: 1;
2145
- min-height: 0;
2146
- }
2147
- /* The window on the stage scrolls inside its frame; the stage itself only holds it. */
2148
- .sc-space__stage {
2149
- min-width: 0;
2150
- min-height: 0;
2151
- overflow: hidden;
2152
- }
2153
- .sc-space__stage:focus {
2154
- outline: none;
2155
- }
2156
-
2157
- .sc-strip {
2158
- display: flex;
2159
- flex-direction: column;
2160
- gap: var(--_s2);
2161
- padding: var(--_s8);
2162
- overflow-y: auto;
2163
- border-right: 1px solid var(--_line);
2164
- }
2165
- .sc-strip__tab {
2166
- display: flex;
2167
- min-width: 0;
2168
- flex-shrink: 0;
2169
- align-items: center;
2170
- gap: var(--_s8);
2171
- padding: var(--_s8) var(--_s10);
2172
- border-radius: var(--_radius-md);
2173
- font-size: var(--_fs-ui);
2174
- text-align: left;
2175
- color: var(--_muted);
2176
- transition:
2177
- background-color 0.15s,
2178
- color 0.15s;
2179
- }
2180
- .sc-strip__tab:hover {
2181
- background: var(--_sunken);
2182
- color: var(--_text);
2183
- }
2184
- /* The window on the stage. */
2185
- .sc-strip__tab--current,
2186
- .sc-strip__tab--current:hover {
2187
- background: var(--_accent-soft);
2188
- font-weight: 500;
2189
- color: var(--_text);
2190
- }
2191
- /* A window the person closed: still there to open, but quiet. */
2192
- .sc-strip__tab--closed {
2193
- opacity: 0.6;
2194
- }
2195
- .sc-strip__mark {
2196
- flex-shrink: 0;
2197
- width: 16px;
2198
- height: 16px;
2199
- }
2200
- .sc-strip__title {
2201
- min-width: 0;
2202
- overflow: hidden;
2203
- text-overflow: ellipsis;
2204
- white-space: nowrap;
2205
- }
2206
- /* The agent said something while another window was on the stage. */
2207
- .sc-strip__dot {
2208
- flex-shrink: 0;
2209
- width: 8px;
2210
- height: 8px;
2211
- margin-left: auto;
2212
- border-radius: 9999px;
2213
- background: var(--_signal);
2214
- }
2215
-
2216
- .sc-dock {
2217
- flex-shrink: 0;
2218
- border-top: 1px solid var(--_line);
2219
- }
2220
- .sc-dock__status {
2221
- display: flex;
2222
- align-items: center;
2223
- gap: var(--_s8);
2224
- padding: var(--_s6) var(--_s16) 0;
2225
- font-size: var(--_fs-xs);
2226
- color: var(--_subtle);
2227
- }
2228
- .sc-dock__status:empty {
2229
- display: none;
2230
- }
2231
- .sc-dock .sc-error {
2232
- padding: var(--_s6) var(--_s16) 0;
2233
- }
2234
- .sc-dock__voice {
2235
- display: flex;
2236
- flex-direction: column;
2237
- align-items: center;
2238
- gap: var(--_s8);
2239
- padding: var(--_s8) var(--_s12) var(--_s12);
2240
- }
2241
-
2242
- @container (max-width: 719px) {
2243
- .sc-space__main {
2244
- grid-template-columns: minmax(0, 1fr);
2245
- grid-template-rows: auto minmax(0, 1fr);
2246
- }
2247
- .sc-strip {
2248
- flex-direction: row;
2249
- gap: 0;
2250
- padding: 0 var(--_s8);
2251
- overflow: auto hidden;
2252
- scrollbar-width: none;
2253
- border-right: 0;
2254
- border-bottom: 1px solid var(--_line);
2255
- }
2256
- .sc-strip__tab,
2257
- .sc-strip__tab:hover {
2258
- border-radius: 0;
2259
- background: none;
2260
- box-shadow: inset 0 -2px 0 transparent;
2261
- }
2262
- .sc-strip__tab--current,
2263
- .sc-strip__tab--current:hover {
2264
- background: none;
2265
- box-shadow: inset 0 -2px 0 var(--_accent);
2266
- }
2267
- }
2268
- }
2269
-
2270
- @keyframes sc-rise {
2271
- from {
2272
- opacity: 0;
2273
- transform: translateY(6px);
2274
- }
2275
- }
2276
- @keyframes sc-fade-in {
2277
- from {
2278
- opacity: 0;
2279
- transform: translateY(3px);
2280
- }
2281
- }
2282
- @keyframes sc-spin {
2283
- to {
2284
- transform: rotate(360deg);
2285
- }
2286
- }
2287
- @keyframes sc-pulse {
2288
- 0%,
2289
- 100% {
2290
- opacity: 0.35;
2291
- }
2292
- 50% {
2293
- opacity: 1;
2294
- }
2295
- }
2296
- @keyframes sc-wash {
2297
- from {
2298
- background-color: var(--_signal-soft);
2299
- }
2300
- to {
2301
- background-color: transparent;
2302
- }
2303
- }
2304
- @keyframes sc-ping {
2305
- 75%,
2306
- 100% {
2307
- opacity: 0;
2308
- transform: scale(2);
2309
- }
2310
- }
2311
-
2312
- @media (prefers-reduced-motion: reduce) {
2313
- :where(.sc-ui:not([data-sc-unstyled])) * {
2314
- animation: none !important;
2315
- transition: none !important;
2316
- }
2317
- }
2318
- }