@diegopluna/narvi 0.0.0-stage → 0.0.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 (351) hide show
  1. package/README.md +82 -2
  2. package/dist/components/activity/ActivityContent.svelte +55 -0
  3. package/dist/components/activity/ActivityContent.svelte.d.ts +11 -0
  4. package/dist/components/activity/ActivityRoot.svelte +66 -0
  5. package/dist/components/activity/ActivityRoot.svelte.d.ts +17 -0
  6. package/dist/components/activity/ActivityStep.svelte +157 -0
  7. package/dist/components/activity/ActivityStep.svelte.d.ts +26 -0
  8. package/dist/components/activity/ActivityThought.svelte +60 -0
  9. package/dist/components/activity/ActivityThought.svelte.d.ts +10 -0
  10. package/dist/components/activity/ActivityTrigger.svelte +103 -0
  11. package/dist/components/activity/ActivityTrigger.svelte.d.ts +20 -0
  12. package/dist/components/activity/context.d.ts +7 -0
  13. package/dist/components/activity/context.js +11 -0
  14. package/dist/components/activity/index.d.ts +11 -0
  15. package/dist/components/activity/index.js +6 -0
  16. package/dist/components/announcer/Announcer.svelte +84 -0
  17. package/dist/components/announcer/Announcer.svelte.d.ts +13 -0
  18. package/dist/components/app-shell/AppShellHeader.svelte +54 -0
  19. package/dist/components/app-shell/AppShellHeader.svelte.d.ts +15 -0
  20. package/dist/components/app-shell/AppShellMain.svelte +49 -0
  21. package/dist/components/app-shell/AppShellMain.svelte.d.ts +11 -0
  22. package/dist/components/app-shell/AppShellPanel.svelte +107 -0
  23. package/dist/components/app-shell/AppShellPanel.svelte.d.ts +18 -0
  24. package/dist/components/app-shell/AppShellRoot.svelte +136 -0
  25. package/dist/components/app-shell/AppShellRoot.svelte.d.ts +28 -0
  26. package/dist/components/app-shell/AppShellSidebar.svelte +192 -0
  27. package/dist/components/app-shell/AppShellSidebar.svelte.d.ts +17 -0
  28. package/dist/components/app-shell/AppShellToggle.svelte +50 -0
  29. package/dist/components/app-shell/AppShellToggle.svelte.d.ts +10 -0
  30. package/dist/components/app-shell/context.d.ts +15 -0
  31. package/dist/components/app-shell/context.js +15 -0
  32. package/dist/components/app-shell/index.d.ts +15 -0
  33. package/dist/components/app-shell/index.js +8 -0
  34. package/dist/components/approval/Approval.svelte +213 -0
  35. package/dist/components/approval/Approval.svelte.d.ts +38 -0
  36. package/dist/components/avatar/AvatarFallback.svelte +73 -0
  37. package/dist/components/avatar/AvatarFallback.svelte.d.ts +11 -0
  38. package/dist/components/avatar/AvatarImage.svelte +75 -0
  39. package/dist/components/avatar/AvatarImage.svelte.d.ts +11 -0
  40. package/dist/components/avatar/AvatarRoot.svelte +108 -0
  41. package/dist/components/avatar/AvatarRoot.svelte.d.ts +19 -0
  42. package/dist/components/avatar/context.d.ts +11 -0
  43. package/dist/components/avatar/context.js +11 -0
  44. package/dist/components/avatar/index.d.ts +7 -0
  45. package/dist/components/avatar/index.js +6 -0
  46. package/dist/components/badge/Badge.svelte +78 -0
  47. package/dist/components/badge/Badge.svelte.d.ts +15 -0
  48. package/dist/components/button/Button.svelte +270 -0
  49. package/dist/components/button/Button.svelte.d.ts +22 -0
  50. package/dist/components/card/Card.svelte +65 -0
  51. package/dist/components/card/Card.svelte.d.ts +15 -0
  52. package/dist/components/change-stats/ChangeStats.svelte +52 -0
  53. package/dist/components/change-stats/ChangeStats.svelte.d.ts +14 -0
  54. package/dist/components/changes-summary/ChangesSummary.svelte +152 -0
  55. package/dist/components/changes-summary/ChangesSummary.svelte.d.ts +20 -0
  56. package/dist/components/checkbox/Checkbox.svelte +178 -0
  57. package/dist/components/checkbox/Checkbox.svelte.d.ts +19 -0
  58. package/dist/components/code/Code.svelte +33 -0
  59. package/dist/components/code/Code.svelte.d.ts +10 -0
  60. package/dist/components/command/CommandDialog.svelte +37 -0
  61. package/dist/components/command/CommandDialog.svelte.d.ts +12 -0
  62. package/dist/components/command/CommandEmpty.svelte +20 -0
  63. package/dist/components/command/CommandEmpty.svelte.d.ts +11 -0
  64. package/dist/components/command/CommandFooter.svelte +25 -0
  65. package/dist/components/command/CommandFooter.svelte.d.ts +11 -0
  66. package/dist/components/command/CommandGroup.svelte +25 -0
  67. package/dist/components/command/CommandGroup.svelte.d.ts +12 -0
  68. package/dist/components/command/CommandInput.svelte +33 -0
  69. package/dist/components/command/CommandInput.svelte.d.ts +8 -0
  70. package/dist/components/command/CommandItem.svelte +49 -0
  71. package/dist/components/command/CommandItem.svelte.d.ts +16 -0
  72. package/dist/components/command/CommandList.svelte +21 -0
  73. package/dist/components/command/CommandList.svelte.d.ts +10 -0
  74. package/dist/components/command/CommandRoot.svelte +20 -0
  75. package/dist/components/command/CommandRoot.svelte.d.ts +11 -0
  76. package/dist/components/command/index.d.ts +20 -0
  77. package/dist/components/command/index.js +12 -0
  78. package/dist/components/command/styles.d.ts +117 -0
  79. package/dist/components/command/styles.js +121 -0
  80. package/dist/components/composer/ComposerAttachButton.svelte +55 -0
  81. package/dist/components/composer/ComposerAttachButton.svelte.d.ts +14 -0
  82. package/dist/components/composer/ComposerAttachment.svelte +173 -0
  83. package/dist/components/composer/ComposerAttachment.svelte.d.ts +13 -0
  84. package/dist/components/composer/ComposerAttachments.svelte +63 -0
  85. package/dist/components/composer/ComposerAttachments.svelte.d.ts +13 -0
  86. package/dist/components/composer/ComposerModelPicker.svelte +475 -0
  87. package/dist/components/composer/ComposerModelPicker.svelte.d.ts +27 -0
  88. package/dist/components/composer/ComposerRoot.svelte +315 -0
  89. package/dist/components/composer/ComposerRoot.svelte.d.ts +42 -0
  90. package/dist/components/composer/ComposerSubmit.svelte +131 -0
  91. package/dist/components/composer/ComposerSubmit.svelte.d.ts +13 -0
  92. package/dist/components/composer/ComposerTextarea.svelte +109 -0
  93. package/dist/components/composer/ComposerTextarea.svelte.d.ts +9 -0
  94. package/dist/components/composer/ComposerToggle.svelte +106 -0
  95. package/dist/components/composer/ComposerToggle.svelte.d.ts +14 -0
  96. package/dist/components/composer/ComposerToolbar.svelte +29 -0
  97. package/dist/components/composer/ComposerToolbar.svelte.d.ts +11 -0
  98. package/dist/components/composer/context.d.ts +53 -0
  99. package/dist/components/composer/context.js +32 -0
  100. package/dist/components/composer/index.d.ts +21 -0
  101. package/dist/components/composer/index.js +13 -0
  102. package/dist/components/conversation/ConversationContent.svelte +94 -0
  103. package/dist/components/conversation/ConversationContent.svelte.d.ts +15 -0
  104. package/dist/components/conversation/ConversationEmpty.svelte +89 -0
  105. package/dist/components/conversation/ConversationEmpty.svelte.d.ts +16 -0
  106. package/dist/components/conversation/ConversationRoot.svelte +237 -0
  107. package/dist/components/conversation/ConversationRoot.svelte.d.ts +20 -0
  108. package/dist/components/conversation/ConversationScrollButton.svelte +114 -0
  109. package/dist/components/conversation/ConversationScrollButton.svelte.d.ts +14 -0
  110. package/dist/components/conversation/context.d.ts +28 -0
  111. package/dist/components/conversation/context.js +15 -0
  112. package/dist/components/conversation/index.d.ts +11 -0
  113. package/dist/components/conversation/index.js +8 -0
  114. package/dist/components/conversation/scrolling.d.ts +25 -0
  115. package/dist/components/conversation/scrolling.js +60 -0
  116. package/dist/components/dev-styles/DevStyles.svelte +21 -0
  117. package/dist/components/dev-styles/DevStyles.svelte.d.ts +3 -0
  118. package/dist/components/dialog/ConfirmDialog.svelte +157 -0
  119. package/dist/components/dialog/ConfirmDialog.svelte.d.ts +31 -0
  120. package/dist/components/dialog/DialogBody.svelte +19 -0
  121. package/dist/components/dialog/DialogBody.svelte.d.ts +10 -0
  122. package/dist/components/dialog/DialogContent.svelte +55 -0
  123. package/dist/components/dialog/DialogContent.svelte.d.ts +17 -0
  124. package/dist/components/dialog/DialogDescription.svelte +23 -0
  125. package/dist/components/dialog/DialogDescription.svelte.d.ts +10 -0
  126. package/dist/components/dialog/DialogFooter.svelte +19 -0
  127. package/dist/components/dialog/DialogFooter.svelte.d.ts +10 -0
  128. package/dist/components/dialog/DialogHeader.svelte +19 -0
  129. package/dist/components/dialog/DialogHeader.svelte.d.ts +10 -0
  130. package/dist/components/dialog/DialogTitle.svelte +20 -0
  131. package/dist/components/dialog/DialogTitle.svelte.d.ts +10 -0
  132. package/dist/components/dialog/index.d.ts +17 -0
  133. package/dist/components/dialog/index.js +12 -0
  134. package/dist/components/dialog/styles.d.ts +120 -0
  135. package/dist/components/dialog/styles.js +136 -0
  136. package/dist/components/divider/Divider.svelte +42 -0
  137. package/dist/components/divider/Divider.svelte.d.ts +11 -0
  138. package/dist/components/empty-state/EmptyState.svelte +82 -0
  139. package/dist/components/empty-state/EmptyState.svelte.d.ts +15 -0
  140. package/dist/components/field/Field.svelte +132 -0
  141. package/dist/components/field/Field.svelte.d.ts +23 -0
  142. package/dist/components/field/context.d.ts +12 -0
  143. package/dist/components/field/context.js +9 -0
  144. package/dist/components/frame/Frame.svelte +88 -0
  145. package/dist/components/frame/Frame.svelte.d.ts +19 -0
  146. package/dist/components/heading/Heading.svelte +82 -0
  147. package/dist/components/heading/Heading.svelte.d.ts +16 -0
  148. package/dist/components/input/Input.svelte +47 -0
  149. package/dist/components/input/Input.svelte.d.ts +14 -0
  150. package/dist/components/kbd/Kbd.svelte +40 -0
  151. package/dist/components/kbd/Kbd.svelte.d.ts +11 -0
  152. package/dist/components/link/Link.svelte +68 -0
  153. package/dist/components/link/Link.svelte.d.ts +16 -0
  154. package/dist/components/menu/ContextMenuContent.svelte +33 -0
  155. package/dist/components/menu/ContextMenuContent.svelte.d.ts +11 -0
  156. package/dist/components/menu/ContextMenuTrigger.svelte +44 -0
  157. package/dist/components/menu/ContextMenuTrigger.svelte.d.ts +11 -0
  158. package/dist/components/menu/MenuCheckboxItem.svelte +43 -0
  159. package/dist/components/menu/MenuCheckboxItem.svelte.d.ts +11 -0
  160. package/dist/components/menu/MenuContent.svelte +36 -0
  161. package/dist/components/menu/MenuContent.svelte.d.ts +10 -0
  162. package/dist/components/menu/MenuItem.svelte +41 -0
  163. package/dist/components/menu/MenuItem.svelte.d.ts +16 -0
  164. package/dist/components/menu/MenuLabel.svelte +24 -0
  165. package/dist/components/menu/MenuLabel.svelte.d.ts +10 -0
  166. package/dist/components/menu/MenuRadioItem.svelte +54 -0
  167. package/dist/components/menu/MenuRadioItem.svelte.d.ts +12 -0
  168. package/dist/components/menu/MenuSeparator.svelte +19 -0
  169. package/dist/components/menu/MenuSeparator.svelte.d.ts +8 -0
  170. package/dist/components/menu/MenuSubContent.svelte +34 -0
  171. package/dist/components/menu/MenuSubContent.svelte.d.ts +10 -0
  172. package/dist/components/menu/MenuSubTrigger.svelte +35 -0
  173. package/dist/components/menu/MenuSubTrigger.svelte.d.ts +11 -0
  174. package/dist/components/menu/context-menu.d.ts +11 -0
  175. package/dist/components/menu/context-menu.js +10 -0
  176. package/dist/components/menu/index.js +16 -0
  177. package/dist/components/message/MessageAction.svelte +62 -0
  178. package/dist/components/message/MessageAction.svelte.d.ts +16 -0
  179. package/dist/components/message/MessageActions.svelte +77 -0
  180. package/dist/components/message/MessageActions.svelte.d.ts +19 -0
  181. package/dist/components/message/MessageContent.svelte +68 -0
  182. package/dist/components/message/MessageContent.svelte.d.ts +12 -0
  183. package/dist/components/message/MessageCopy.svelte +106 -0
  184. package/dist/components/message/MessageCopy.svelte.d.ts +16 -0
  185. package/dist/components/message/MessageHeader.svelte +74 -0
  186. package/dist/components/message/MessageHeader.svelte.d.ts +15 -0
  187. package/dist/components/message/MessagePending.svelte +44 -0
  188. package/dist/components/message/MessagePending.svelte.d.ts +10 -0
  189. package/dist/components/message/MessageRoot.svelte +79 -0
  190. package/dist/components/message/MessageRoot.svelte.d.ts +20 -0
  191. package/dist/components/message/MessageTime.svelte +58 -0
  192. package/dist/components/message/MessageTime.svelte.d.ts +12 -0
  193. package/dist/components/message/context.d.ts +7 -0
  194. package/dist/components/message/context.js +11 -0
  195. package/dist/components/message/index.d.ts +18 -0
  196. package/dist/components/message/index.js +11 -0
  197. package/dist/components/notice/Notice.svelte +111 -0
  198. package/dist/components/notice/Notice.svelte.d.ts +26 -0
  199. package/dist/components/plan/Plan.svelte +198 -0
  200. package/dist/components/plan/Plan.svelte.d.ts +18 -0
  201. package/dist/components/popover/PopoverContent.svelte +42 -0
  202. package/dist/components/popover/PopoverContent.svelte.d.ts +10 -0
  203. package/dist/components/popover/index.d.ts +7 -0
  204. package/dist/components/popover/index.js +7 -0
  205. package/dist/components/progress/Progress.svelte +113 -0
  206. package/dist/components/progress/Progress.svelte.d.ts +11 -0
  207. package/dist/components/questionnaire/Questionnaire.svelte +315 -0
  208. package/dist/components/questionnaire/Questionnaire.svelte.d.ts +33 -0
  209. package/dist/components/queued-message/QueuedMessage.svelte +133 -0
  210. package/dist/components/queued-message/QueuedMessage.svelte.d.ts +23 -0
  211. package/dist/components/rail/RailItem.svelte +170 -0
  212. package/dist/components/rail/RailItem.svelte.d.ts +21 -0
  213. package/dist/components/rail/RailRoot.svelte +46 -0
  214. package/dist/components/rail/RailRoot.svelte.d.ts +13 -0
  215. package/dist/components/rail/RailSpacer.svelte +2 -0
  216. package/dist/components/rail/RailSpacer.svelte.d.ts +26 -0
  217. package/dist/components/rail/index.d.ts +6 -0
  218. package/dist/components/rail/index.js +4 -0
  219. package/dist/components/reasoning/ReasoningContent.svelte +56 -0
  220. package/dist/components/reasoning/ReasoningContent.svelte.d.ts +12 -0
  221. package/dist/components/reasoning/ReasoningRoot.svelte +102 -0
  222. package/dist/components/reasoning/ReasoningRoot.svelte.d.ts +25 -0
  223. package/dist/components/reasoning/ReasoningTrigger.svelte +106 -0
  224. package/dist/components/reasoning/ReasoningTrigger.svelte.d.ts +18 -0
  225. package/dist/components/reasoning/context.d.ts +8 -0
  226. package/dist/components/reasoning/context.js +11 -0
  227. package/dist/components/reasoning/index.d.ts +7 -0
  228. package/dist/components/reasoning/index.js +6 -0
  229. package/dist/components/resize-handle/ResizeHandle.svelte +177 -0
  230. package/dist/components/resize-handle/ResizeHandle.svelte.d.ts +29 -0
  231. package/dist/components/rolling-text/RollingText.svelte +51 -0
  232. package/dist/components/rolling-text/RollingText.svelte.d.ts +11 -0
  233. package/dist/components/segmented/SegmentedControl.svelte +171 -0
  234. package/dist/components/segmented/SegmentedControl.svelte.d.ts +20 -0
  235. package/dist/components/select/Select.svelte +146 -0
  236. package/dist/components/select/Select.svelte.d.ts +31 -0
  237. package/dist/components/separator/Separator.svelte +48 -0
  238. package/dist/components/separator/Separator.svelte.d.ts +11 -0
  239. package/dist/components/settings-row/SettingsRow.svelte +97 -0
  240. package/dist/components/settings-row/SettingsRow.svelte.d.ts +21 -0
  241. package/dist/components/shimmer/Shimmer.svelte +66 -0
  242. package/dist/components/shimmer/Shimmer.svelte.d.ts +12 -0
  243. package/dist/components/sidebar/SidebarContent.svelte +70 -0
  244. package/dist/components/sidebar/SidebarContent.svelte.d.ts +13 -0
  245. package/dist/components/sidebar/SidebarFooter.svelte +33 -0
  246. package/dist/components/sidebar/SidebarFooter.svelte.d.ts +10 -0
  247. package/dist/components/sidebar/SidebarGroup.svelte +123 -0
  248. package/dist/components/sidebar/SidebarGroup.svelte.d.ts +19 -0
  249. package/dist/components/sidebar/SidebarHeader.svelte +39 -0
  250. package/dist/components/sidebar/SidebarHeader.svelte.d.ts +12 -0
  251. package/dist/components/sidebar/SidebarItem.svelte +236 -0
  252. package/dist/components/sidebar/SidebarItem.svelte.d.ts +27 -0
  253. package/dist/components/sidebar/index.d.ts +11 -0
  254. package/dist/components/sidebar/index.js +6 -0
  255. package/dist/components/skeleton/Skeleton.svelte +61 -0
  256. package/dist/components/skeleton/Skeleton.svelte.d.ts +13 -0
  257. package/dist/components/spinner/Spinner.svelte +57 -0
  258. package/dist/components/spinner/Spinner.svelte.d.ts +12 -0
  259. package/dist/components/stack/Stack.svelte +99 -0
  260. package/dist/components/stack/Stack.svelte.d.ts +19 -0
  261. package/dist/components/status-indicator/StatusIndicator.svelte +97 -0
  262. package/dist/components/status-indicator/StatusIndicator.svelte.d.ts +14 -0
  263. package/dist/components/suggestions/SuggestionsItem.svelte +104 -0
  264. package/dist/components/suggestions/SuggestionsItem.svelte.d.ts +14 -0
  265. package/dist/components/suggestions/SuggestionsRoot.svelte +80 -0
  266. package/dist/components/suggestions/SuggestionsRoot.svelte.d.ts +20 -0
  267. package/dist/components/suggestions/context.d.ts +7 -0
  268. package/dist/components/suggestions/context.js +8 -0
  269. package/dist/components/suggestions/index.d.ts +5 -0
  270. package/dist/components/suggestions/index.js +5 -0
  271. package/dist/components/switch/Switch.svelte +175 -0
  272. package/dist/components/switch/Switch.svelte.d.ts +17 -0
  273. package/dist/components/tabs/Tabs.svelte +170 -0
  274. package/dist/components/tabs/Tabs.svelte.d.ts +22 -0
  275. package/dist/components/text/Text.svelte +88 -0
  276. package/dist/components/text/Text.svelte.d.ts +20 -0
  277. package/dist/components/textarea/Textarea.svelte +64 -0
  278. package/dist/components/textarea/Textarea.svelte.d.ts +13 -0
  279. package/dist/components/theme/Theme.svelte +49 -0
  280. package/dist/components/theme/Theme.svelte.d.ts +25 -0
  281. package/dist/components/toast/Toaster.svelte +223 -0
  282. package/dist/components/toast/Toaster.svelte.d.ts +9 -0
  283. package/dist/components/toast/toasts.svelte.d.ts +55 -0
  284. package/dist/components/toast/toasts.svelte.js +66 -0
  285. package/dist/components/tool/ToolContent.svelte +51 -0
  286. package/dist/components/tool/ToolContent.svelte.d.ts +11 -0
  287. package/dist/components/tool/ToolInput.svelte +21 -0
  288. package/dist/components/tool/ToolInput.svelte.d.ts +14 -0
  289. package/dist/components/tool/ToolOutput.svelte +33 -0
  290. package/dist/components/tool/ToolOutput.svelte.d.ts +16 -0
  291. package/dist/components/tool/ToolRoot.svelte +94 -0
  292. package/dist/components/tool/ToolRoot.svelte.d.ts +23 -0
  293. package/dist/components/tool/ToolSection.svelte +102 -0
  294. package/dist/components/tool/ToolSection.svelte.d.ts +16 -0
  295. package/dist/components/tool/ToolTrigger.svelte +191 -0
  296. package/dist/components/tool/ToolTrigger.svelte.d.ts +14 -0
  297. package/dist/components/tool/context.d.ts +18 -0
  298. package/dist/components/tool/context.js +11 -0
  299. package/dist/components/tool/index.d.ts +12 -0
  300. package/dist/components/tool/index.js +8 -0
  301. package/dist/components/tooltip/TooltipContent.svelte +76 -0
  302. package/dist/components/tooltip/TooltipContent.svelte.d.ts +12 -0
  303. package/dist/components/tooltip/TooltipRoot.svelte +37 -0
  304. package/dist/components/tooltip/TooltipRoot.svelte.d.ts +10 -0
  305. package/dist/components/tooltip/TooltipTrigger.svelte +25 -0
  306. package/dist/components/tooltip/TooltipTrigger.svelte.d.ts +5 -0
  307. package/dist/components/tooltip/index.d.ts +13 -0
  308. package/dist/components/tooltip/index.js +10 -0
  309. package/dist/components/tooltip/intent.d.ts +2 -0
  310. package/dist/components/tooltip/intent.js +29 -0
  311. package/dist/components/work-fold/WorkFold.svelte +100 -0
  312. package/dist/components/work-fold/WorkFold.svelte.d.ts +15 -0
  313. package/dist/index.d.ts +127 -0
  314. package/dist/index.js +93 -0
  315. package/dist/internal/Chevron.svelte +28 -0
  316. package/dist/internal/Chevron.svelte.d.ts +7 -0
  317. package/dist/internal/Code.svelte +70 -0
  318. package/dist/internal/Code.svelte.d.ts +10 -0
  319. package/dist/internal/Collapse.svelte +57 -0
  320. package/dist/internal/Collapse.svelte.d.ts +12 -0
  321. package/dist/internal/Glyph.svelte +89 -0
  322. package/dist/internal/Glyph.svelte.d.ts +37 -0
  323. package/dist/internal/Tile.svelte +86 -0
  324. package/dist/internal/Tile.svelte.d.ts +15 -0
  325. package/dist/internal/control.d.ts +58 -0
  326. package/dist/internal/control.js +74 -0
  327. package/dist/internal/disclosure.d.ts +7 -0
  328. package/dist/internal/disclosure.js +1 -0
  329. package/dist/internal/json.d.ts +13 -0
  330. package/dist/internal/json.js +51 -0
  331. package/dist/internal/kinds.d.ts +9 -0
  332. package/dist/internal/kinds.js +25 -0
  333. package/dist/internal/layer.d.ts +103 -0
  334. package/dist/internal/layer.js +129 -0
  335. package/dist/internal/loop.d.ts +35 -0
  336. package/dist/internal/loop.js +72 -0
  337. package/dist/internal/markers.stylex.d.ts +14 -0
  338. package/dist/internal/markers.stylex.js +10 -0
  339. package/dist/internal/roving.d.ts +17 -0
  340. package/dist/internal/roving.js +68 -0
  341. package/dist/internal/shared.d.ts +36 -0
  342. package/dist/internal/shared.js +44 -0
  343. package/dist/internal/sx.d.ts +14 -0
  344. package/dist/internal/sx.js +11 -0
  345. package/dist/preset.d.ts +102 -0
  346. package/dist/preset.js +334 -0
  347. package/dist/tokens.stylex.d.ts +104 -0
  348. package/dist/tokens.stylex.js +125 -0
  349. package/dist/vite.d.ts +16 -0
  350. package/dist/vite.js +58 -0
  351. package/package.json +123 -5
@@ -0,0 +1,170 @@
1
+ <script lang="ts" module>
2
+ import * as stylex from '@stylexjs/stylex';
3
+ import type { Snippet } from 'svelte';
4
+ import { shared } from '../../internal/shared.js';
5
+ import { attrs, type Sx } from '../../internal/sx.js';
6
+ import { colors, font, motion, radius } from '../../tokens.stylex.js';
7
+ import * as Tooltip from '../tooltip/index.js';
8
+
9
+ export type RailItemProps = {
10
+ /** What it is. Names the button and shows as its tooltip. */
11
+ label: string;
12
+ href?: string;
13
+ onclick?: (event: MouseEvent) => void;
14
+ /** The place that is open now. */
15
+ current?: boolean;
16
+ /** A count, or `true` for a dot: something there wants attention. */
17
+ badge?: number | boolean;
18
+ /** The keys that go there, shown in the tooltip. */
19
+ shortcut?: string[];
20
+ sx?: Sx;
21
+ class?: string;
22
+ /** A 16 to 20px icon, or a mark. */
23
+ children?: Snippet;
24
+ };
25
+
26
+ const HOVER = '@media (hover: hover) and (pointer: fine)';
27
+ const FORCED = '@media (forced-colors: active)';
28
+ const MOTION = '@media (prefers-reduced-motion: no-preference)';
29
+
30
+ const styles = stylex.create({
31
+ item: {
32
+ position: 'relative',
33
+ display: 'grid',
34
+ placeItems: 'center',
35
+ flexShrink: 0,
36
+ width: '2.25rem',
37
+ height: '2.25rem',
38
+ margin: 0,
39
+ padding: 0,
40
+ borderWidth: 0,
41
+ borderRadius: radius.lg,
42
+ backgroundColor: {
43
+ default: 'transparent',
44
+ ':hover': { default: null, [HOVER]: colors.hover }
45
+ },
46
+ color: { default: colors.textSubtle, ':hover': { default: null, [HOVER]: colors.text } },
47
+ cursor: 'pointer',
48
+ textDecoration: 'none',
49
+ WebkitTapHighlightColor: 'transparent',
50
+ scale: { default: null, ':active': { default: null, [MOTION]: 0.95 } },
51
+ transitionProperty: {
52
+ default: 'background-color, color',
53
+ [MOTION]: 'background-color, color, scale'
54
+ },
55
+ transitionDuration: motion.fast,
56
+ transitionTimingFunction: 'ease'
57
+ },
58
+ // The open place: lifted, with ithildin at the rail's edge
59
+ current: {
60
+ backgroundColor: { default: colors.surfaceRaised, ':hover': colors.surfaceRaised },
61
+ boxShadow: `inset 0 0 0 1px ${colors.line}, 0 1px 2px ${colors.shade}`,
62
+ color: colors.text,
63
+ '::before': {
64
+ content: '""',
65
+ position: 'absolute',
66
+ insetInlineStart: '-0.5rem',
67
+ top: '25%',
68
+ bottom: '25%',
69
+ width: '2px',
70
+ borderRadius: '2px',
71
+ backgroundColor: { default: colors.ithil, [FORCED]: 'Highlight' },
72
+ boxShadow: `0 0 8px ${colors.glow}`,
73
+ forcedColorAdjust: 'none'
74
+ }
75
+ },
76
+ badge: {
77
+ position: 'absolute',
78
+ top: '0.125rem',
79
+ insetInlineEnd: '0.125rem',
80
+ display: 'grid',
81
+ placeItems: 'center',
82
+ minWidth: '1rem',
83
+ height: '1rem',
84
+ paddingInline: '0.25rem',
85
+ boxSizing: 'border-box',
86
+ borderRadius: radius.full,
87
+ backgroundColor: colors.ithil,
88
+ boxShadow: `0 0 0 2px ${colors.bg}`,
89
+ color: colors.onIthil,
90
+ fontSize: '0.625rem',
91
+ fontWeight: font.weightSemibold,
92
+ fontVariantNumeric: 'tabular-nums',
93
+ lineHeight: 1
94
+ },
95
+ dot: {
96
+ minWidth: '0.5rem',
97
+ height: '0.5rem',
98
+ padding: 0,
99
+ top: '0.375rem',
100
+ insetInlineEnd: '0.375rem'
101
+ },
102
+ hidden: {
103
+ position: 'absolute',
104
+ width: '1px',
105
+ height: '1px',
106
+ overflow: 'hidden',
107
+ clipPath: 'inset(50%)',
108
+ whiteSpace: 'nowrap'
109
+ }
110
+ });
111
+ </script>
112
+
113
+ <script lang="ts">
114
+ let {
115
+ label,
116
+ href,
117
+ onclick,
118
+ current = false,
119
+ badge,
120
+ shortcut,
121
+ sx,
122
+ class: className,
123
+ children
124
+ }: RailItemProps = $props();
125
+
126
+ const count = $derived(typeof badge === 'number' && badge > 0 ? badge : undefined);
127
+ const dot = $derived(badge === true);
128
+ </script>
129
+
130
+ {#snippet face()}
131
+ {@render children?.()}
132
+ {#if count !== undefined}
133
+ <span aria-hidden="true" {...stylex.attrs(styles.badge)}>{count > 99 ? '99+' : count}</span>
134
+ <span {...stylex.attrs(styles.hidden)}>, {count} new</span>
135
+ {:else if dot}
136
+ <span aria-hidden="true" {...stylex.attrs(styles.badge, styles.dot)}></span>
137
+ <span {...stylex.attrs(styles.hidden)}>, new</span>
138
+ {/if}
139
+ {/snippet}
140
+
141
+ <Tooltip.Root>
142
+ <Tooltip.Trigger>
143
+ {#snippet child({ props })}
144
+ {@const own = attrs(
145
+ [styles.item, shared.focusable, current && styles.current, sx],
146
+ className
147
+ )}
148
+ {#if href !== undefined}
149
+ <a {...props} {href} data-rail-item aria-current={current ? 'page' : undefined} {...own}>
150
+ <span {...stylex.attrs(styles.hidden)}>{label}</span>{@render face()}
151
+ </a>
152
+ {:else}
153
+ <button
154
+ {...props}
155
+ type="button"
156
+ data-rail-item
157
+ aria-current={current ? 'page' : undefined}
158
+ {...own}
159
+ onclick={(event) => {
160
+ (props.onclick as ((event: MouseEvent) => void) | undefined)?.(event);
161
+ onclick?.(event);
162
+ }}
163
+ >
164
+ <span {...stylex.attrs(styles.hidden)}>{label}</span>{@render face()}
165
+ </button>
166
+ {/if}
167
+ {/snippet}
168
+ </Tooltip.Trigger>
169
+ <Tooltip.Content side="right" {shortcut}>{label}</Tooltip.Content>
170
+ </Tooltip.Root>
@@ -0,0 +1,21 @@
1
+ import type { Snippet } from 'svelte';
2
+ import { type Sx } from '../../internal/sx.js';
3
+ export type RailItemProps = {
4
+ /** What it is. Names the button and shows as its tooltip. */
5
+ label: string;
6
+ href?: string;
7
+ onclick?: (event: MouseEvent) => void;
8
+ /** The place that is open now. */
9
+ current?: boolean;
10
+ /** A count, or `true` for a dot: something there wants attention. */
11
+ badge?: number | boolean;
12
+ /** The keys that go there, shown in the tooltip. */
13
+ shortcut?: string[];
14
+ sx?: Sx;
15
+ class?: string;
16
+ /** A 16 to 20px icon, or a mark. */
17
+ children?: Snippet;
18
+ };
19
+ declare const RailItem: import("svelte").Component<RailItemProps, {}, "">;
20
+ type RailItem = ReturnType<typeof RailItem>;
21
+ export default RailItem;
@@ -0,0 +1,46 @@
1
+ <script lang="ts" module>
2
+ import * as stylex from '@stylexjs/stylex';
3
+ import type { Snippet } from 'svelte';
4
+ import type { HTMLAttributes } from 'svelte/elements';
5
+ import { roving } from '../../internal/roving.js';
6
+ import { attrs, type Sx } from '../../internal/sx.js';
7
+ import * as Tooltip from '../tooltip/index.js';
8
+
9
+ export type RailRootProps = Omit<HTMLAttributes<HTMLElement>, 'children'> & {
10
+ /** Names it for assistive technology: "Workspaces". */
11
+ label: string;
12
+ sx?: Sx;
13
+ /** Rail.Item buttons; anything after a `Rail.Spacer` sits at the bottom. */
14
+ children?: Snippet;
15
+ };
16
+
17
+ const styles = stylex.create({
18
+ rail: {
19
+ display: 'flex',
20
+ flexDirection: 'column',
21
+ alignItems: 'center',
22
+ gap: '0.25rem',
23
+ width: '100%',
24
+ paddingBlock: '0.5rem',
25
+ overflowY: 'auto',
26
+ scrollbarWidth: 'none'
27
+ }
28
+ });
29
+ </script>
30
+
31
+ <script lang="ts">
32
+ let { label, sx, class: className, children, ...rest }: RailRootProps = $props();
33
+ </script>
34
+
35
+ <!-- A vertical toolbar: one tab stop, the arrow keys move along it -->
36
+ <nav
37
+ aria-label={label}
38
+ data-slot="rail"
39
+ {...rest}
40
+ {...attrs([styles.rail, sx], className)}
41
+ {@attach roving({ selector: '[data-rail-item]' })}
42
+ >
43
+ <Tooltip.Provider delayDuration={400}>
44
+ {@render children?.()}
45
+ </Tooltip.Provider>
46
+ </nav>
@@ -0,0 +1,13 @@
1
+ import type { Snippet } from 'svelte';
2
+ import type { HTMLAttributes } from 'svelte/elements';
3
+ import { type Sx } from '../../internal/sx.js';
4
+ export type RailRootProps = Omit<HTMLAttributes<HTMLElement>, 'children'> & {
5
+ /** Names it for assistive technology: "Workspaces". */
6
+ label: string;
7
+ sx?: Sx;
8
+ /** Rail.Item buttons; anything after a `Rail.Spacer` sits at the bottom. */
9
+ children?: Snippet;
10
+ };
11
+ declare const RailRoot: import("svelte").Component<RailRootProps, {}, "">;
12
+ type RailRoot = ReturnType<typeof RailRoot>;
13
+ export default RailRoot;
@@ -0,0 +1,2 @@
1
+ <!-- Pushes the Rail.Items after it to the bottom of the rail, such as Settings. -->
2
+ <div data-slot="rail-spacer" aria-hidden="true" style="flex-grow: 1"></div>
@@ -0,0 +1,26 @@
1
+ export default RailSpacer;
2
+ type RailSpacer = SvelteComponent<{
3
+ [x: string]: never;
4
+ }, {
5
+ [evt: string]: CustomEvent<any>;
6
+ }, {}> & {
7
+ $$bindings?: string | undefined;
8
+ };
9
+ declare const RailSpacer: $$__sveltets_2_IsomorphicComponent<{
10
+ [x: string]: never;
11
+ }, {
12
+ [evt: string]: CustomEvent<any>;
13
+ }, {}, {}, string>;
14
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
15
+ new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
16
+ $$bindings?: Bindings;
17
+ } & Exports;
18
+ (internal: unknown, props: {
19
+ $$events?: Events;
20
+ $$slots?: Slots;
21
+ }): Exports & {
22
+ $set?: any;
23
+ $on?: any;
24
+ };
25
+ z_$$bindings?: Bindings;
26
+ }
@@ -0,0 +1,6 @@
1
+ import Item from './RailItem.svelte';
2
+ import Root from './RailRoot.svelte';
3
+ import Spacer from './RailSpacer.svelte';
4
+ export { Root, Item, Spacer };
5
+ export type { RailItemProps } from './RailItem.svelte';
6
+ export type { RailRootProps } from './RailRoot.svelte';
@@ -0,0 +1,4 @@
1
+ import Item from './RailItem.svelte';
2
+ import Root from './RailRoot.svelte';
3
+ import Spacer from './RailSpacer.svelte';
4
+ export { Root, Item, Spacer };
@@ -0,0 +1,56 @@
1
+ <script lang="ts" module>
2
+ import * as stylex from '@stylexjs/stylex';
3
+ import type { Snippet } from 'svelte';
4
+ import type { HTMLAttributes } from 'svelte/elements';
5
+ import Collapse from '../../internal/Collapse.svelte';
6
+ import type { Sx } from '../../internal/sx.js';
7
+ import { colors, font } from '../../tokens.stylex.js';
8
+ import { getReasoningContext } from './context.js';
9
+
10
+ export type ReasoningContentProps = Omit<HTMLAttributes<HTMLDivElement>, 'children'> & {
11
+ /** Styles for the text of the thoughts. */
12
+ sx?: Sx;
13
+ /** The model's thoughts. */
14
+ children?: Snippet;
15
+ };
16
+
17
+ const styles = stylex.create({
18
+ // The thoughts hang from a rail under the bulb, set apart from the answer and
19
+ // quieter than it; their text lines up with the label above
20
+ thoughts: {
21
+ display: 'flex',
22
+ flexDirection: 'column',
23
+ gap: '0.5rem',
24
+ marginTop: '0.375rem',
25
+ marginBottom: '0.25rem',
26
+ marginInlineStart: 'calc(0.75rem - 0.5px)',
27
+ paddingInlineStart: 'calc(1.375rem - 0.5px)',
28
+ borderInlineStartWidth: '1px',
29
+ borderInlineStartStyle: 'solid',
30
+ borderInlineStartColor: colors.line,
31
+ color: colors.textMuted,
32
+ fontSize: font.sizeMd,
33
+ lineHeight: font.leadingNormal,
34
+ overflowWrap: 'break-word'
35
+ }
36
+ });
37
+ </script>
38
+
39
+ <script lang="ts">
40
+ let { sx, class: className, children, ...rest }: ReasoningContentProps = $props();
41
+
42
+ const reasoning = getReasoningContext('Content');
43
+ </script>
44
+
45
+ <Collapse
46
+ open={reasoning.open}
47
+ id={reasoning.contentId}
48
+ role="region"
49
+ aria-labelledby={reasoning.triggerId}
50
+ data-slot="reasoning-content"
51
+ class={className}
52
+ innerSx={[styles.thoughts, sx]}
53
+ {...rest}
54
+ >
55
+ {@render children?.()}
56
+ </Collapse>
@@ -0,0 +1,12 @@
1
+ import type { Snippet } from 'svelte';
2
+ import type { HTMLAttributes } from 'svelte/elements';
3
+ import type { Sx } from '../../internal/sx.js';
4
+ export type ReasoningContentProps = Omit<HTMLAttributes<HTMLDivElement>, 'children'> & {
5
+ /** Styles for the text of the thoughts. */
6
+ sx?: Sx;
7
+ /** The model's thoughts. */
8
+ children?: Snippet;
9
+ };
10
+ declare const ReasoningContent: import("svelte").Component<ReasoningContentProps, {}, "">;
11
+ type ReasoningContent = ReturnType<typeof ReasoningContent>;
12
+ export default ReasoningContent;
@@ -0,0 +1,102 @@
1
+ <script lang="ts" module>
2
+ import * as stylex from '@stylexjs/stylex';
3
+ import type { Snippet } from 'svelte';
4
+ import type { HTMLAttributes } from 'svelte/elements';
5
+ import { attrs, type Sx } from '../../internal/sx.js';
6
+ import { colors, font } from '../../tokens.stylex.js';
7
+ import { setReasoningContext } from './context.js';
8
+
9
+ export type ReasoningRootProps = Omit<HTMLAttributes<HTMLDivElement>, 'children'> & {
10
+ /**
11
+ * Set while the model is thinking. Reasoning opens when thinking starts,
12
+ * times it, and folds away when it ends, unless the person has opened or
13
+ * closed it themselves.
14
+ */
15
+ streaming?: boolean;
16
+ /** Whether the thoughts are showing. Bindable. Opens while streaming by default. */
17
+ open?: boolean;
18
+ /**
19
+ * How long the thinking took, in seconds. Reasoning times itself while it
20
+ * watches `streaming`; pass this for a message loaded from history.
21
+ */
22
+ duration?: number;
23
+ sx?: Sx;
24
+ ref?: HTMLDivElement | null;
25
+ /** A Reasoning.Trigger and a Reasoning.Content. */
26
+ children?: Snippet;
27
+ };
28
+
29
+ const styles = stylex.create({
30
+ root: {
31
+ display: 'flex',
32
+ flexDirection: 'column',
33
+ minWidth: 0,
34
+ color: colors.text,
35
+ fontFamily: font.body
36
+ }
37
+ });
38
+ </script>
39
+
40
+ <script lang="ts">
41
+ import { untrack } from 'svelte';
42
+
43
+ let {
44
+ streaming = false,
45
+ open = $bindable(),
46
+ duration,
47
+ sx,
48
+ class: className,
49
+ ref = $bindable(null),
50
+ children,
51
+ ...rest
52
+ }: ReasoningRootProps = $props();
53
+
54
+ const uid = $props.id();
55
+ // Seeded once. A fallback of `streaming` would be worked out again whenever
56
+ // streaming changed, and undo what the person chose.
57
+ if (open === undefined) open = untrack(() => streaming);
58
+ // Once the person opens or closes it, it stays the way they left it
59
+ let touched = false;
60
+ let started: number | undefined;
61
+ let measured = $state<number | undefined>();
62
+
63
+ $effect.pre(() => {
64
+ if (streaming) {
65
+ started ??= performance.now();
66
+ if (!touched) open = true;
67
+ } else if (started !== undefined) {
68
+ measured = Math.round((performance.now() - started) / 1000);
69
+ started = undefined;
70
+ if (!touched) open = false;
71
+ }
72
+ });
73
+
74
+ setReasoningContext({
75
+ get open() {
76
+ return open ?? false;
77
+ },
78
+ toggle() {
79
+ touched = true;
80
+ open = !open;
81
+ },
82
+ get streaming() {
83
+ return streaming;
84
+ },
85
+ get duration() {
86
+ return duration ?? measured;
87
+ },
88
+ triggerId: `${uid}-trigger`,
89
+ contentId: `${uid}-content`
90
+ });
91
+ </script>
92
+
93
+ <div
94
+ bind:this={ref}
95
+ data-slot="reasoning"
96
+ data-state={open ? 'open' : 'closed'}
97
+ data-streaming={streaming || undefined}
98
+ {...rest}
99
+ {...attrs([styles.root, sx], className)}
100
+ >
101
+ {@render children?.()}
102
+ </div>
@@ -0,0 +1,25 @@
1
+ import type { Snippet } from 'svelte';
2
+ import type { HTMLAttributes } from 'svelte/elements';
3
+ import { type Sx } from '../../internal/sx.js';
4
+ export type ReasoningRootProps = Omit<HTMLAttributes<HTMLDivElement>, 'children'> & {
5
+ /**
6
+ * Set while the model is thinking. Reasoning opens when thinking starts,
7
+ * times it, and folds away when it ends, unless the person has opened or
8
+ * closed it themselves.
9
+ */
10
+ streaming?: boolean;
11
+ /** Whether the thoughts are showing. Bindable. Opens while streaming by default. */
12
+ open?: boolean;
13
+ /**
14
+ * How long the thinking took, in seconds. Reasoning times itself while it
15
+ * watches `streaming`; pass this for a message loaded from history.
16
+ */
17
+ duration?: number;
18
+ sx?: Sx;
19
+ ref?: HTMLDivElement | null;
20
+ /** A Reasoning.Trigger and a Reasoning.Content. */
21
+ children?: Snippet;
22
+ };
23
+ declare const ReasoningRoot: import("svelte").Component<ReasoningRootProps, {}, "ref" | "open">;
24
+ type ReasoningRoot = ReturnType<typeof ReasoningRoot>;
25
+ export default ReasoningRoot;
@@ -0,0 +1,106 @@
1
+ <script lang="ts" module>
2
+ import * as stylex from '@stylexjs/stylex';
3
+ import type { Snippet } from 'svelte';
4
+ import type { HTMLButtonAttributes } from 'svelte/elements';
5
+ import Chevron from '../../internal/Chevron.svelte';
6
+ import { attrs, type Sx } from '../../internal/sx.js';
7
+ import Tile from '../../internal/Tile.svelte';
8
+ import { colors, font, motion, radius } from '../../tokens.stylex.js';
9
+ import Shimmer from '../shimmer/Shimmer.svelte';
10
+ import { getReasoningContext } from './context.js';
11
+
12
+ export type ReasoningTriggerProps = Omit<HTMLButtonAttributes, 'children'> & {
13
+ sx?: Sx;
14
+ ref?: HTMLButtonElement | null;
15
+ /**
16
+ * The label, in place of "Thinking" and "Thought for 4 seconds". It receives
17
+ * whether the model is still thinking and, once known, for how many seconds.
18
+ */
19
+ children?: Snippet<[{ streaming: boolean; duration: number | undefined }]>;
20
+ };
21
+
22
+ const HOVER = '@media (hover: hover) and (pointer: fine)';
23
+
24
+ const styles = stylex.create({
25
+ trigger: {
26
+ display: 'inline-flex',
27
+ alignItems: 'center',
28
+ alignSelf: 'flex-start',
29
+ gap: '0.625rem',
30
+ minHeight: '1.75rem',
31
+ margin: 0,
32
+ padding: 0,
33
+ borderWidth: 0,
34
+ borderRadius: radius.xs,
35
+ backgroundColor: 'transparent',
36
+ color: {
37
+ default: colors.textMuted,
38
+ ':hover': { default: null, [HOVER]: colors.text }
39
+ },
40
+ fontFamily: 'inherit',
41
+ fontSize: font.sizeMd,
42
+ lineHeight: 1,
43
+ cursor: 'pointer',
44
+ WebkitTapHighlightColor: 'transparent',
45
+ outlineStyle: 'solid',
46
+ outlineWidth: { default: 0, ':focus-visible': '2px' },
47
+ outlineColor: colors.focusRing,
48
+ outlineOffset: '2px',
49
+ transitionProperty: 'color',
50
+ transitionDuration: motion.base,
51
+ transitionTimingFunction: 'ease'
52
+ },
53
+ label: { display: 'inline-flex', alignItems: 'center', gap: '0.25rem' },
54
+ chevron: { display: 'grid', color: colors.textSubtle }
55
+ });
56
+
57
+ /** "Thought for 4 seconds", "Thought for 1m 12s" */
58
+ function describe(duration: number | undefined): string {
59
+ if (duration === undefined) return 'Thoughts';
60
+ if (duration < 2) return 'Thought for a second';
61
+ if (duration < 60) return `Thought for ${duration} seconds`;
62
+ const minutes = Math.floor(duration / 60);
63
+ const seconds = duration % 60;
64
+ return `Thought for ${minutes}m${seconds ? ` ${seconds}s` : ''}`;
65
+ }
66
+ </script>
67
+
68
+ <script lang="ts">
69
+ let {
70
+ sx,
71
+ class: className,
72
+ ref = $bindable(null),
73
+ children,
74
+ onclick,
75
+ ...rest
76
+ }: ReasoningTriggerProps = $props();
77
+
78
+ const reasoning = getReasoningContext('Trigger');
79
+ </script>
80
+
81
+ <button
82
+ bind:this={ref}
83
+ type="button"
84
+ id={reasoning.triggerId}
85
+ aria-expanded={reasoning.open}
86
+ aria-controls={reasoning.contentId}
87
+ data-slot="reasoning-trigger"
88
+ {...rest}
89
+ {...attrs([styles.trigger, sx], className)}
90
+ onclick={(event) => {
91
+ onclick?.(event);
92
+ if (!event.defaultPrevented) reasoning.toggle();
93
+ }}
94
+ >
95
+ <Tile glyph="bulb" tone={reasoning.streaming ? 'live' : 'neutral'} />
96
+ <span {...stylex.attrs(styles.label)}>
97
+ {#if children}
98
+ {@render children({ streaming: reasoning.streaming, duration: reasoning.duration })}
99
+ {:else if reasoning.streaming}
100
+ <Shimmer>Thinking</Shimmer>
101
+ {:else}
102
+ {describe(reasoning.duration)}
103
+ {/if}
104
+ <span {...stylex.attrs(styles.chevron)}><Chevron open={reasoning.open} size={12} /></span>
105
+ </span>
106
+ </button>
@@ -0,0 +1,18 @@
1
+ import type { Snippet } from 'svelte';
2
+ import type { HTMLButtonAttributes } from 'svelte/elements';
3
+ import { type Sx } from '../../internal/sx.js';
4
+ export type ReasoningTriggerProps = Omit<HTMLButtonAttributes, 'children'> & {
5
+ sx?: Sx;
6
+ ref?: HTMLButtonElement | null;
7
+ /**
8
+ * The label, in place of "Thinking" and "Thought for 4 seconds". It receives
9
+ * whether the model is still thinking and, once known, for how many seconds.
10
+ */
11
+ children?: Snippet<[{
12
+ streaming: boolean;
13
+ duration: number | undefined;
14
+ }]>;
15
+ };
16
+ declare const ReasoningTrigger: import("svelte").Component<ReasoningTriggerProps, {}, "ref">;
17
+ type ReasoningTrigger = ReturnType<typeof ReasoningTrigger>;
18
+ export default ReasoningTrigger;
@@ -0,0 +1,8 @@
1
+ import type { DisclosureContext } from '../../internal/disclosure.js';
2
+ export type ReasoningContext = DisclosureContext & {
3
+ readonly streaming: boolean;
4
+ /** How long the thinking took, in seconds, once it is known. */
5
+ readonly duration: number | undefined;
6
+ };
7
+ export declare function setReasoningContext(context: ReasoningContext): void;
8
+ export declare function getReasoningContext(part: string): ReasoningContext;
@@ -0,0 +1,11 @@
1
+ import { getContext, setContext } from 'svelte';
2
+ const KEY = Symbol('narvi.reasoning');
3
+ export function setReasoningContext(context) {
4
+ setContext(KEY, context);
5
+ }
6
+ export function getReasoningContext(part) {
7
+ const context = getContext(KEY);
8
+ if (!context)
9
+ throw new Error(`<Reasoning.${part}> must be placed inside <Reasoning.Root>.`);
10
+ return context;
11
+ }
@@ -0,0 +1,7 @@
1
+ import Content from './ReasoningContent.svelte';
2
+ import Root from './ReasoningRoot.svelte';
3
+ import Trigger from './ReasoningTrigger.svelte';
4
+ export { Root, Trigger, Content, Root as ReasoningRoot, Trigger as ReasoningTrigger, Content as ReasoningContent };
5
+ export type { ReasoningContentProps } from './ReasoningContent.svelte';
6
+ export type { ReasoningRootProps } from './ReasoningRoot.svelte';
7
+ export type { ReasoningTriggerProps } from './ReasoningTrigger.svelte';
@@ -0,0 +1,6 @@
1
+ import Content from './ReasoningContent.svelte';
2
+ import Root from './ReasoningRoot.svelte';
3
+ import Trigger from './ReasoningTrigger.svelte';
4
+ export { Root, Trigger, Content,
5
+ //
6
+ Root as ReasoningRoot, Trigger as ReasoningTrigger, Content as ReasoningContent };