@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,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 { shared } from '../../internal/shared.js';
6
+ import { attrs, type Sx } from '../../internal/sx.js';
7
+ import { colors, font, motion, radius } from '../../tokens.stylex.js';
8
+ import { useComposer } from './context.js';
9
+
10
+ export type ComposerToggleProps = Omit<HTMLButtonAttributes, 'children'> & {
11
+ /** Whether it is on. Bindable. */
12
+ pressed?: boolean;
13
+ sx?: Sx;
14
+ ref?: HTMLButtonElement | null;
15
+ /** A 16px icon and a short label, such as "Search". */
16
+ children?: Snippet;
17
+ };
18
+
19
+ const HOVER = '@media (hover: hover) and (pointer: fine)';
20
+ const MOTION = '@media (prefers-reduced-motion: no-preference)';
21
+ const FORCED = '@media (forced-colors: active)';
22
+
23
+ const styles = stylex.create({
24
+ toggle: {
25
+ display: 'inline-flex',
26
+ alignItems: 'center',
27
+ flexShrink: 0,
28
+ gap: '0.375rem',
29
+ height: '1.75rem',
30
+ margin: 0,
31
+ paddingInline: '0.625rem',
32
+ borderWidth: 0,
33
+ borderRadius: `calc(${radius.xl} * 4 / 3)`,
34
+ backgroundColor: {
35
+ default: 'transparent',
36
+ ':hover': { default: null, [HOVER]: colors.hover }
37
+ },
38
+ boxShadow: `inset 0 0 0 1px ${colors.line}`,
39
+ color: {
40
+ default: colors.textMuted,
41
+ ':hover': { default: null, [HOVER]: colors.text }
42
+ },
43
+ fontFamily: 'inherit',
44
+ fontSize: font.sizeSm,
45
+ fontWeight: font.weightMedium,
46
+ lineHeight: 1,
47
+ whiteSpace: 'nowrap',
48
+ cursor: { default: 'pointer', ':disabled': 'not-allowed' },
49
+ opacity: { default: 1, ':disabled': 0.5 },
50
+ WebkitTapHighlightColor: 'transparent',
51
+ scale: { default: null, ':active': { default: null, [MOTION]: 0.96 } },
52
+ transitionProperty: {
53
+ default: 'background-color, color, box-shadow',
54
+ [MOTION]: 'scale, background-color, color, box-shadow'
55
+ },
56
+ transitionDuration: motion.base,
57
+ transitionTimingFunction: { default: 'ease', [MOTION]: `${motion.easeOut}, ease, ease, ease` }
58
+ },
59
+ // The icon leads, so the pill is a touch tighter on that side
60
+ withIcon: { paddingInlineStart: '0.5rem' },
61
+ // On: lit with ithildin, the one colour that marks state
62
+ on: {
63
+ backgroundColor: {
64
+ default: colors.ithilSoft,
65
+ ':hover': { default: null, [HOVER]: colors.focusHalo }
66
+ },
67
+ boxShadow: `inset 0 0 0 1px color-mix(in oklab, ${colors.ithil} 35%, transparent)`,
68
+ color: { default: colors.ithil, ':hover': colors.ithil, [FORCED]: 'Highlight' }
69
+ }
70
+ });
71
+ </script>
72
+
73
+ <script lang="ts">
74
+ let {
75
+ pressed = $bindable(false),
76
+ disabled,
77
+ sx,
78
+ class: className,
79
+ ref = $bindable(null),
80
+ children,
81
+ onclick,
82
+ ...rest
83
+ }: ComposerToggleProps = $props();
84
+
85
+ const composer = useComposer('Toggle');
86
+ </script>
87
+
88
+ <button
89
+ bind:this={ref}
90
+ type="button"
91
+ aria-pressed={pressed}
92
+ disabled={disabled ?? composer.disabled}
93
+ data-slot="composer-toggle"
94
+ data-state={pressed ? 'on' : 'off'}
95
+ {...rest}
96
+ {...attrs(
97
+ [styles.toggle, shared.focusable, styles.withIcon, pressed && styles.on, sx],
98
+ className
99
+ )}
100
+ onclick={(event) => {
101
+ onclick?.(event);
102
+ if (!event.defaultPrevented) pressed = !pressed;
103
+ }}
104
+ >
105
+ {@render children?.()}
106
+ </button>
@@ -0,0 +1,14 @@
1
+ import type { Snippet } from 'svelte';
2
+ import type { HTMLButtonAttributes } from 'svelte/elements';
3
+ import { type Sx } from '../../internal/sx.js';
4
+ export type ComposerToggleProps = Omit<HTMLButtonAttributes, 'children'> & {
5
+ /** Whether it is on. Bindable. */
6
+ pressed?: boolean;
7
+ sx?: Sx;
8
+ ref?: HTMLButtonElement | null;
9
+ /** A 16px icon and a short label, such as "Search". */
10
+ children?: Snippet;
11
+ };
12
+ declare const ComposerToggle: import("svelte").Component<ComposerToggleProps, {}, "ref" | "pressed">;
13
+ type ComposerToggle = ReturnType<typeof ComposerToggle>;
14
+ export default ComposerToggle;
@@ -0,0 +1,29 @@
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
+
7
+ export type ComposerToolbarProps = Omit<HTMLAttributes<HTMLDivElement>, 'children'> & {
8
+ sx?: Sx;
9
+ /** Tools at the start, such as ghost Buttons, and a Composer.Submit, which goes to the end. */
10
+ children?: Snippet;
11
+ };
12
+
13
+ const styles = stylex.create({
14
+ toolbar: {
15
+ display: 'flex',
16
+ alignItems: 'center',
17
+ gap: '0.25rem',
18
+ minWidth: 0
19
+ }
20
+ });
21
+ </script>
22
+
23
+ <script lang="ts">
24
+ let { sx, class: className, children, ...rest }: ComposerToolbarProps = $props();
25
+ </script>
26
+
27
+ <div data-slot="composer-toolbar" {...rest} {...attrs([styles.toolbar, sx], className)}>
28
+ {@render children?.()}
29
+ </div>
@@ -0,0 +1,11 @@
1
+ import type { Snippet } from 'svelte';
2
+ import type { HTMLAttributes } from 'svelte/elements';
3
+ import { type Sx } from '../../internal/sx.js';
4
+ export type ComposerToolbarProps = Omit<HTMLAttributes<HTMLDivElement>, 'children'> & {
5
+ sx?: Sx;
6
+ /** Tools at the start, such as ghost Buttons, and a Composer.Submit, which goes to the end. */
7
+ children?: Snippet;
8
+ };
9
+ declare const ComposerToolbar: import("svelte").Component<ComposerToolbarProps, {}, "">;
10
+ type ComposerToolbar = ReturnType<typeof ComposerToolbar>;
11
+ export default ComposerToolbar;
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Where the exchange stands, as most AI SDKs report it.
3
+ * - `ready`: waiting for the person
4
+ * - `submitted`: sent, waiting for the first token
5
+ * - `streaming`: the reply is arriving
6
+ * - `error`: the last request failed; the person can send again
7
+ */
8
+ export type ComposerStatus = 'ready' | 'submitted' | 'streaming' | 'error';
9
+ /** What the person sends: their text, and the files they attached. */
10
+ export type ComposerMessage = {
11
+ text: string;
12
+ files: File[];
13
+ };
14
+ /** Why files were turned away: not an accepted type, too large, or one too many. */
15
+ export type ComposerRejection = {
16
+ file: File;
17
+ reason: 'type' | 'size' | 'count';
18
+ };
19
+ export type ComposerContext = {
20
+ value: string;
21
+ readonly files: readonly File[];
22
+ readonly status: ComposerStatus;
23
+ readonly disabled: boolean;
24
+ /** True while a reply is on its way. Submitting stops it instead of sending. */
25
+ readonly busy: boolean;
26
+ /**
27
+ * Something to send, text or files, and nothing in the way of sending it.
28
+ * While a reply is under way, true only if the composer can queue.
29
+ */
30
+ readonly canSend: boolean;
31
+ /** Sends the message, or stops the reply while one is arriving. */
32
+ submit(): void;
33
+ /** Adds files, turning away any the composer does not accept. */
34
+ addFiles(files: Iterable<File>): void;
35
+ removeFile(file: File): void;
36
+ /** Opens the system's file picker. */
37
+ browse(): void;
38
+ /** True once a Composer.Attachments is placed: only then are dropped or pasted files taken. */
39
+ readonly attachable: boolean;
40
+ focus(): void;
41
+ /** Reads a short message out to assistive technology, such as "Attached report.pdf". */
42
+ announce(message: string): void;
43
+ /** @internal */
44
+ setTextarea(el: HTMLTextAreaElement | null): void;
45
+ /** @internal Composer.Attachments announces itself, so files can be dropped and pasted. */
46
+ registerAttachments(): () => void;
47
+ };
48
+ export declare function setComposerContext(context: ComposerContext): void;
49
+ /** The surrounding Composer, for building parts of your own. */
50
+ export declare function getComposerContext(): ComposerContext | undefined;
51
+ export declare function useComposer(part: string): ComposerContext;
52
+ /** Whether a file matches an `accept` list such as `image/*,.pdf`. */
53
+ export declare function accepts(file: File, accept: string | undefined): boolean;
@@ -0,0 +1,32 @@
1
+ import { getContext, setContext } from 'svelte';
2
+ const KEY = Symbol('narvi.composer');
3
+ export function setComposerContext(context) {
4
+ setContext(KEY, context);
5
+ }
6
+ /** The surrounding Composer, for building parts of your own. */
7
+ export function getComposerContext() {
8
+ return getContext(KEY);
9
+ }
10
+ export function useComposer(part) {
11
+ const context = getComposerContext();
12
+ if (!context)
13
+ throw new Error(`<Composer.${part}> must be placed inside <Composer.Root>.`);
14
+ return context;
15
+ }
16
+ /** Whether a file matches an `accept` list such as `image/*,.pdf`. */
17
+ export function accepts(file, accept) {
18
+ if (!accept)
19
+ return true;
20
+ const name = file.name.toLowerCase();
21
+ const type = file.type.toLowerCase();
22
+ return accept.split(',').some((raw) => {
23
+ const rule = raw.trim().toLowerCase();
24
+ if (!rule)
25
+ return false;
26
+ if (rule.startsWith('.'))
27
+ return name.endsWith(rule);
28
+ if (rule.endsWith('/*'))
29
+ return type.startsWith(rule.slice(0, -1));
30
+ return type === rule;
31
+ });
32
+ }
@@ -0,0 +1,21 @@
1
+ import AttachButton from './ComposerAttachButton.svelte';
2
+ import Attachment from './ComposerAttachment.svelte';
3
+ import Attachments from './ComposerAttachments.svelte';
4
+ import ModelPicker from './ComposerModelPicker.svelte';
5
+ import Root from './ComposerRoot.svelte';
6
+ import Submit from './ComposerSubmit.svelte';
7
+ import Textarea from './ComposerTextarea.svelte';
8
+ import Toggle from './ComposerToggle.svelte';
9
+ import Toolbar from './ComposerToolbar.svelte';
10
+ export { Root, Attachments, Attachment, Textarea, Toolbar, AttachButton, Toggle, ModelPicker, Submit, Root as ComposerRoot, Attachments as ComposerAttachments, Attachment as ComposerAttachment, Textarea as ComposerTextarea, Toolbar as ComposerToolbar, AttachButton as ComposerAttachButton, Toggle as ComposerToggle, ModelPicker as ComposerModelPicker, Submit as ComposerSubmit };
11
+ export { getComposerContext } from './context.js';
12
+ export type { ComposerContext, ComposerMessage, ComposerRejection, ComposerStatus } from './context.js';
13
+ export type { ComposerAttachButtonProps } from './ComposerAttachButton.svelte';
14
+ export type { ComposerAttachmentProps } from './ComposerAttachment.svelte';
15
+ export type { ComposerAttachmentsProps } from './ComposerAttachments.svelte';
16
+ export type { ComposerModel, ComposerModelPickerProps } from './ComposerModelPicker.svelte';
17
+ export type { ComposerRootProps } from './ComposerRoot.svelte';
18
+ export type { ComposerSubmitProps } from './ComposerSubmit.svelte';
19
+ export type { ComposerTextareaProps } from './ComposerTextarea.svelte';
20
+ export type { ComposerToggleProps } from './ComposerToggle.svelte';
21
+ export type { ComposerToolbarProps } from './ComposerToolbar.svelte';
@@ -0,0 +1,13 @@
1
+ import AttachButton from './ComposerAttachButton.svelte';
2
+ import Attachment from './ComposerAttachment.svelte';
3
+ import Attachments from './ComposerAttachments.svelte';
4
+ import ModelPicker from './ComposerModelPicker.svelte';
5
+ import Root from './ComposerRoot.svelte';
6
+ import Submit from './ComposerSubmit.svelte';
7
+ import Textarea from './ComposerTextarea.svelte';
8
+ import Toggle from './ComposerToggle.svelte';
9
+ import Toolbar from './ComposerToolbar.svelte';
10
+ export { Root, Attachments, Attachment, Textarea, Toolbar, AttachButton, Toggle, ModelPicker, Submit,
11
+ //
12
+ Root as ComposerRoot, Attachments as ComposerAttachments, Attachment as ComposerAttachment, Textarea as ComposerTextarea, Toolbar as ComposerToolbar, AttachButton as ComposerAttachButton, Toggle as ComposerToggle, ModelPicker as ComposerModelPicker, Submit as ComposerSubmit };
13
+ export { getComposerContext } from './context.js';
@@ -0,0 +1,94 @@
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, space } from '../../tokens.stylex.js';
7
+ import { useConversation } from './context.js';
8
+
9
+ export type ConversationContentProps = Omit<HTMLAttributes<HTMLDivElement>, 'children'> & {
10
+ /** Styles for the column the messages sit in: its width, padding and gaps. */
11
+ sx?: Sx;
12
+ /** Styles for the scrolling area around the column. */
13
+ viewportSx?: Sx;
14
+ ref?: HTMLDivElement | null;
15
+ /** The messages. */
16
+ children?: Snippet;
17
+ };
18
+
19
+ const styles = stylex.create({
20
+ viewport: {
21
+ position: 'relative',
22
+ flexGrow: 1,
23
+ minHeight: 0,
24
+ overflowY: 'auto',
25
+ // The conversation does its own anchoring at the bottom; the browser's would fight it
26
+ overflowAnchor: 'none',
27
+ overscrollBehavior: 'contain',
28
+ scrollbarGutter: 'stable',
29
+ scrollbarWidth: 'thin',
30
+ scrollbarColor: `${colors.lineStrong} transparent`,
31
+ outlineStyle: 'solid',
32
+ outlineWidth: { default: 0, ':focus-visible': '2px' },
33
+ outlineColor: colors.focusRing,
34
+ outlineOffset: '-2px'
35
+ },
36
+ column: {
37
+ boxSizing: 'border-box',
38
+ display: 'flex',
39
+ flexDirection: 'column',
40
+ gap: space.x5,
41
+ width: '100%',
42
+ maxWidth: '46rem',
43
+ minHeight: '100%',
44
+ marginInline: 'auto',
45
+ paddingBlock: space.x6,
46
+ paddingInline: space.x4
47
+ }
48
+ });
49
+ </script>
50
+
51
+ <script lang="ts">
52
+ let {
53
+ sx,
54
+ viewportSx,
55
+ class: className,
56
+ ref = $bindable(null),
57
+ children,
58
+ ...rest
59
+ }: ConversationContentProps = $props();
60
+
61
+ const conversation = useConversation('Content');
62
+ let column = $state<HTMLDivElement | null>(null);
63
+
64
+ $effect(() => {
65
+ if (ref && column) return conversation.attach(ref, column);
66
+ });
67
+ </script>
68
+
69
+ <!-- A log, but a silent one: streamed text read aloud word by word is noise.
70
+ Say what matters, "Working", "Done", with an Announcer instead. -->
71
+ <!-- A scrolling region must be reachable from the keyboard -->
72
+ <!-- svelte-ignore a11y_no_noninteractive_tabindex -->
73
+ <div
74
+ bind:this={ref}
75
+ role="log"
76
+ aria-live="off"
77
+ tabindex="0"
78
+ aria-label="Conversation"
79
+ data-slot="conversation-viewport"
80
+ {...rest}
81
+ {...stylex.attrs(styles.viewport, viewportSx)}
82
+ >
83
+ <div
84
+ bind:this={column}
85
+ data-slot="conversation-content"
86
+ {...attrs([styles.column, sx], className)}
87
+ >
88
+ {@render children?.()}
89
+ <!-- Room for the reply beneath a message lifted to the top -->
90
+ {#if conversation.spacer > 0}
91
+ <div aria-hidden="true" style:height="{conversation.spacer}px" style:flex-shrink="0"></div>
92
+ {/if}
93
+ </div>
94
+ </div>
@@ -0,0 +1,15 @@
1
+ import type { Snippet } from 'svelte';
2
+ import type { HTMLAttributes } from 'svelte/elements';
3
+ import { type Sx } from '../../internal/sx.js';
4
+ export type ConversationContentProps = Omit<HTMLAttributes<HTMLDivElement>, 'children'> & {
5
+ /** Styles for the column the messages sit in: its width, padding and gaps. */
6
+ sx?: Sx;
7
+ /** Styles for the scrolling area around the column. */
8
+ viewportSx?: Sx;
9
+ ref?: HTMLDivElement | null;
10
+ /** The messages. */
11
+ children?: Snippet;
12
+ };
13
+ declare const ConversationContent: import("svelte").Component<ConversationContentProps, {}, "ref">;
14
+ type ConversationContent = ReturnType<typeof ConversationContent>;
15
+ export default ConversationContent;
@@ -0,0 +1,89 @@
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, space } from '../../tokens.stylex.js';
7
+
8
+ export type ConversationEmptyProps = Omit<
9
+ HTMLAttributes<HTMLDivElement>,
10
+ 'children' | 'title'
11
+ > & {
12
+ /** The greeting, set in the display serif. */
13
+ title?: string;
14
+ description?: string;
15
+ /** Shown above the title, such as a logo or an icon. */
16
+ icon?: Snippet;
17
+ sx?: Sx;
18
+ /** Shown below the description, such as Suggestions. */
19
+ children?: Snippet;
20
+ };
21
+
22
+ const styles = stylex.create({
23
+ empty: {
24
+ display: 'flex',
25
+ flexDirection: 'column',
26
+ alignItems: 'center',
27
+ justifyContent: 'center',
28
+ flexGrow: 1,
29
+ gap: space.x2,
30
+ paddingBlock: space.x8,
31
+ textAlign: 'center',
32
+ textWrap: 'balance'
33
+ },
34
+ icon: {
35
+ display: 'grid',
36
+ placeItems: 'center',
37
+ marginBottom: space.x2,
38
+ color: colors.textMuted
39
+ },
40
+ title: {
41
+ margin: 0,
42
+ color: colors.text,
43
+ fontFamily: font.display,
44
+ fontSize: '1.875rem',
45
+ fontWeight: font.weightDisplay,
46
+ letterSpacing: font.trackingDisplay,
47
+ lineHeight: font.leadingTight
48
+ },
49
+ description: {
50
+ maxWidth: '32rem',
51
+ margin: 0,
52
+ color: colors.textMuted,
53
+ fontSize: font.sizeMd,
54
+ lineHeight: font.leadingNormal
55
+ },
56
+ children: {
57
+ display: 'flex',
58
+ justifyContent: 'center',
59
+ marginTop: space.x4
60
+ }
61
+ });
62
+ </script>
63
+
64
+ <script lang="ts">
65
+ let {
66
+ title,
67
+ description,
68
+ icon,
69
+ sx,
70
+ class: className,
71
+ children,
72
+ ...rest
73
+ }: ConversationEmptyProps = $props();
74
+ </script>
75
+
76
+ <div data-slot="conversation-empty" {...rest} {...attrs([styles.empty, sx], className)}>
77
+ {#if icon}
78
+ <div {...stylex.attrs(styles.icon)}>{@render icon()}</div>
79
+ {/if}
80
+ {#if title}
81
+ <p {...stylex.attrs(styles.title)}>{title}</p>
82
+ {/if}
83
+ {#if description}
84
+ <p {...stylex.attrs(styles.description)}>{description}</p>
85
+ {/if}
86
+ {#if children}
87
+ <div {...stylex.attrs(styles.children)}>{@render children()}</div>
88
+ {/if}
89
+ </div>
@@ -0,0 +1,16 @@
1
+ import type { Snippet } from 'svelte';
2
+ import type { HTMLAttributes } from 'svelte/elements';
3
+ import { type Sx } from '../../internal/sx.js';
4
+ export type ConversationEmptyProps = Omit<HTMLAttributes<HTMLDivElement>, 'children' | 'title'> & {
5
+ /** The greeting, set in the display serif. */
6
+ title?: string;
7
+ description?: string;
8
+ /** Shown above the title, such as a logo or an icon. */
9
+ icon?: Snippet;
10
+ sx?: Sx;
11
+ /** Shown below the description, such as Suggestions. */
12
+ children?: Snippet;
13
+ };
14
+ declare const ConversationEmpty: import("svelte").Component<ConversationEmptyProps, {}, "">;
15
+ type ConversationEmpty = ReturnType<typeof ConversationEmpty>;
16
+ export default ConversationEmpty;