@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,84 @@
1
+ <!--
2
+ Says a short message to assistive technology, such as "Working", "Waiting for
3
+ your answer" or "Done", without showing anything.
4
+
5
+ The rules come from Eregion, where each fixed a message that went unheard:
6
+ the region is on the page, empty, before anything is said into it; it is a
7
+ plain polite live region, because some screen readers drop updates from
8
+ role="status"; it says nothing for the message it starts with, so opening a
9
+ thread is quiet; a message said twice is still heard twice; and it empties
10
+ itself after a while, so a stale message is not found by browsing later.
11
+ -->
12
+ <script lang="ts" module>
13
+ import * as stylex from '@stylexjs/stylex';
14
+
15
+ export type AnnouncerProps = {
16
+ /** What to say. Each change is announced; the first value is not. */
17
+ message?: string;
18
+ /** `assertive` interrupts; keep it for what cannot wait. */
19
+ politeness?: 'polite' | 'assertive';
20
+ /** How long a message stays in the region, in milliseconds. */
21
+ clearAfter?: number;
22
+ };
23
+
24
+ const styles = stylex.create({
25
+ hidden: {
26
+ position: 'absolute',
27
+ width: '1px',
28
+ height: '1px',
29
+ margin: '-1px',
30
+ padding: 0,
31
+ overflow: 'hidden',
32
+ clipPath: 'inset(50%)',
33
+ whiteSpace: 'nowrap',
34
+ borderWidth: 0
35
+ }
36
+ });
37
+ </script>
38
+
39
+ <script lang="ts">
40
+ import { untrack } from 'svelte';
41
+
42
+ let { message, politeness = 'polite', clearAfter = 7000 }: AnnouncerProps = $props();
43
+
44
+ const NBSP = String.fromCharCode(0xa0);
45
+ let text = $state('');
46
+ let timer: ReturnType<typeof setTimeout> | undefined;
47
+ let first = true;
48
+
49
+ /**
50
+ * Says a message now. Use it to say the same words again, which a changed
51
+ * `message` cannot do.
52
+ */
53
+ export function announce(next: string) {
54
+ clearTimeout(timer);
55
+ if (!next) {
56
+ text = '';
57
+ return;
58
+ }
59
+ // The same words as the region holds would be no change, and go unheard;
60
+ // a no-break space on the end makes them one
61
+ text = next === text ? next + NBSP : next;
62
+ timer = setTimeout(() => (text = ''), clearAfter);
63
+ }
64
+
65
+ $effect(() => {
66
+ const next = message;
67
+ if (first) {
68
+ first = false;
69
+ return;
70
+ }
71
+ untrack(() => announce(next ?? ''));
72
+ });
73
+
74
+ $effect(() => () => clearTimeout(timer));
75
+ </script>
76
+
77
+ <div
78
+ aria-live={politeness}
79
+ aria-atomic="true"
80
+ data-slot="announcer"
81
+ {...stylex.attrs(styles.hidden)}
82
+ >
83
+ {text}
84
+ </div>
@@ -0,0 +1,13 @@
1
+ export type AnnouncerProps = {
2
+ /** What to say. Each change is announced; the first value is not. */
3
+ message?: string;
4
+ /** `assertive` interrupts; keep it for what cannot wait. */
5
+ politeness?: 'polite' | 'assertive';
6
+ /** How long a message stays in the region, in milliseconds. */
7
+ clearAfter?: number;
8
+ };
9
+ declare const Announcer: import("svelte").Component<AnnouncerProps, {
10
+ announce: (next: string) => void;
11
+ }, "">;
12
+ type Announcer = ReturnType<typeof Announcer>;
13
+ export default Announcer;
@@ -0,0 +1,54 @@
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 { shared } from '../../internal/shared.js';
6
+ import { attrs, type Sx } from '../../internal/sx.js';
7
+ import { colors, font, motion } from '../../tokens.stylex.js';
8
+
9
+ export type AppShellHeaderProps = Omit<HTMLAttributes<HTMLElement>, 'children'> & {
10
+ /**
11
+ * Whether the bar drags the window, in Electron with a hidden title bar.
12
+ * Narvi's controls opt out on their own, so they still take clicks.
13
+ */
14
+ drag?: boolean;
15
+ sx?: Sx;
16
+ children?: Snippet;
17
+ };
18
+
19
+ const MOTION = '@media (prefers-reduced-motion: no-preference)';
20
+
21
+ const styles = stylex.create({
22
+ header: {
23
+ display: 'flex',
24
+ alignItems: 'center',
25
+ gap: '0.5rem',
26
+ flexShrink: 0,
27
+ height: '3.25rem',
28
+ paddingInlineEnd: '0.75rem',
29
+ // Clear of the traffic lights, for whatever part of them the sidebar
30
+ // does not cover now. It moves with the sidebar.
31
+ paddingInlineStart:
32
+ 'calc(0.75rem + max(0px, var(--narvi-window-inset, 0px) - var(--narvi-sidebar-taken, 0px)))',
33
+ borderBottomWidth: '1px',
34
+ borderBottomStyle: 'solid',
35
+ borderBottomColor: colors.line,
36
+ fontSize: font.sizeMd,
37
+ transitionProperty: { default: 'none', [MOTION]: 'padding-inline-start' },
38
+ transitionDuration: motion.slow,
39
+ transitionTimingFunction: motion.easeInOut
40
+ }
41
+ });
42
+ </script>
43
+
44
+ <script lang="ts">
45
+ let { drag = true, sx, class: className, children, ...rest }: AppShellHeaderProps = $props();
46
+ </script>
47
+
48
+ <header
49
+ data-slot="app-shell-header"
50
+ {...rest}
51
+ {...attrs([styles.header, drag && shared.dragRegion, sx], className)}
52
+ >
53
+ {@render children?.()}
54
+ </header>
@@ -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 AppShellHeaderProps = Omit<HTMLAttributes<HTMLElement>, 'children'> & {
5
+ /**
6
+ * Whether the bar drags the window, in Electron with a hidden title bar.
7
+ * Narvi's controls opt out on their own, so they still take clicks.
8
+ */
9
+ drag?: boolean;
10
+ sx?: Sx;
11
+ children?: Snippet;
12
+ };
13
+ declare const AppShellHeader: import("svelte").Component<AppShellHeaderProps, {}, "">;
14
+ type AppShellHeader = ReturnType<typeof AppShellHeader>;
15
+ export default AppShellHeader;
@@ -0,0 +1,49 @@
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 { shared } from '../../internal/shared.js';
6
+ import { attrs, type Sx } from '../../internal/sx.js';
7
+ import { colors, radius } from '../../tokens.stylex.js';
8
+ import { useAppShell } from './context.js';
9
+
10
+ export type AppShellMainProps = Omit<HTMLAttributes<HTMLElement>, 'children'> & {
11
+ sx?: Sx;
12
+ /** An AppShell.Header and the page. */
13
+ children?: Snippet;
14
+ };
15
+
16
+ const styles = stylex.create({
17
+ // The page sits on the stone like a sheet laid on a table
18
+ main: {
19
+ position: 'relative',
20
+ display: 'flex',
21
+ flexDirection: 'column',
22
+ flexGrow: 1,
23
+ minWidth: 0,
24
+ marginBlock: '0.375rem',
25
+ marginInlineEnd: '0.375rem',
26
+ overflow: 'clip',
27
+ borderRadius: radius.frame,
28
+ backgroundColor: colors.bgRaised,
29
+ boxShadow: `inset 0 0 0 1px ${colors.line}, 0 1px 2px ${colors.shade}`,
30
+ outlineStyle: 'none'
31
+ },
32
+ narrow: { margin: 0, borderRadius: 0, boxShadow: 'none' }
33
+ });
34
+ </script>
35
+
36
+ <script lang="ts">
37
+ let { sx, class: className, children, ...rest }: AppShellMainProps = $props();
38
+
39
+ const shell = useAppShell('Main');
40
+ </script>
41
+
42
+ <main
43
+ tabindex="-1"
44
+ data-slot="app-shell-main"
45
+ {...rest}
46
+ {...attrs([styles.main, shared.edged, shell.narrow && styles.narrow, sx], className)}
47
+ >
48
+ {@render children?.()}
49
+ </main>
@@ -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 AppShellMainProps = Omit<HTMLAttributes<HTMLElement>, 'children'> & {
5
+ sx?: Sx;
6
+ /** An AppShell.Header and the page. */
7
+ children?: Snippet;
8
+ };
9
+ declare const AppShellMain: import("svelte").Component<AppShellMainProps, {}, "">;
10
+ type AppShellMain = ReturnType<typeof AppShellMain>;
11
+ export default AppShellMain;
@@ -0,0 +1,107 @@
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 { shared } from '../../internal/shared.js';
6
+ import { attrs, type Sx } from '../../internal/sx.js';
7
+ import { colors, radius } from '../../tokens.stylex.js';
8
+ import ResizeHandle from '../resize-handle/ResizeHandle.svelte';
9
+ import { useAppShell } from './context.js';
10
+
11
+ export type AppShellPanelProps = Omit<HTMLAttributes<HTMLElement>, 'children'> & {
12
+ /** Names the region: "Changes", "Files". */
13
+ label: string;
14
+ /** Its width in pixels. Bindable; store it if it should be remembered. */
15
+ width?: number;
16
+ minWidth?: number;
17
+ defaultWidth?: number;
18
+ /** How much room it always leaves the main area, in pixels. */
19
+ mainMinWidth?: number;
20
+ sx?: Sx;
21
+ children?: Snippet;
22
+ };
23
+
24
+ const styles = stylex.create({
25
+ panel: {
26
+ position: 'relative',
27
+ display: 'flex',
28
+ flexDirection: 'column',
29
+ flexShrink: 0,
30
+ width: 'var(--narvi-panel-width)',
31
+ minWidth: 0,
32
+ marginBlock: '0.375rem',
33
+ marginInlineEnd: '0.375rem',
34
+ overflow: 'clip',
35
+ borderRadius: radius.frame,
36
+ backgroundColor: colors.bgRaised,
37
+ boxShadow: `inset 0 0 0 1px ${colors.line}, 0 1px 2px ${colors.shade}`
38
+ },
39
+ // On a narrow window the panel takes the place of the page, under its
40
+ // header, which stays in reach with the sidebar's toggle
41
+ narrow: {
42
+ position: 'absolute',
43
+ inset: 0,
44
+ top: '3.25rem',
45
+ zIndex: 5,
46
+ width: 'auto',
47
+ margin: 0,
48
+ borderRadius: 0,
49
+ boxShadow: 'none'
50
+ },
51
+ handle: { position: 'relative', alignSelf: 'stretch', marginBlock: '0.375rem' }
52
+ });
53
+ </script>
54
+
55
+ <script lang="ts">
56
+ let {
57
+ label,
58
+ width = $bindable(560),
59
+ minWidth = 320,
60
+ defaultWidth = 560,
61
+ mainMinWidth = 352,
62
+ sx,
63
+ class: className,
64
+ children,
65
+ ...rest
66
+ }: AppShellPanelProps = $props();
67
+
68
+ const shell = useAppShell('Panel');
69
+ let element = $state<HTMLElement | null>(null);
70
+
71
+ // It never takes so much that the main area falls below its minimum
72
+ const largest = () => {
73
+ // On the server there is no window to measure: no limit yet
74
+ if (typeof window === 'undefined') return Infinity;
75
+ const shellWidth =
76
+ element?.closest<HTMLElement>('[data-slot="app-shell"]')?.clientWidth ?? innerWidth;
77
+ const main = element?.parentElement?.querySelector<HTMLElement>('[data-slot="app-shell-main"]');
78
+ const sidebar = element?.parentElement?.querySelector<HTMLElement>(
79
+ '[data-slot="app-shell-sidebar"]'
80
+ );
81
+ return shellWidth - (sidebar?.offsetWidth ?? 0) - Math.max(mainMinWidth, 0) - (main ? 12 : 0);
82
+ };
83
+ </script>
84
+
85
+ {#if !shell.narrow}
86
+ <ResizeHandle
87
+ bind:value={width}
88
+ min={minWidth}
89
+ max={largest}
90
+ defaultValue={defaultWidth}
91
+ edge="start"
92
+ target={element}
93
+ property="--narvi-panel-width"
94
+ label="Resize the {label.toLowerCase()} panel"
95
+ sx={styles.handle}
96
+ />
97
+ {/if}
98
+ <aside
99
+ bind:this={element}
100
+ aria-label={label}
101
+ data-slot="app-shell-panel"
102
+ style:--narvi-panel-width="{width}px"
103
+ {...rest}
104
+ {...attrs([styles.panel, shared.edged, shell.narrow && styles.narrow, sx], className)}
105
+ >
106
+ {@render children?.()}
107
+ </aside>
@@ -0,0 +1,18 @@
1
+ import type { Snippet } from 'svelte';
2
+ import type { HTMLAttributes } from 'svelte/elements';
3
+ import { type Sx } from '../../internal/sx.js';
4
+ export type AppShellPanelProps = Omit<HTMLAttributes<HTMLElement>, 'children'> & {
5
+ /** Names the region: "Changes", "Files". */
6
+ label: string;
7
+ /** Its width in pixels. Bindable; store it if it should be remembered. */
8
+ width?: number;
9
+ minWidth?: number;
10
+ defaultWidth?: number;
11
+ /** How much room it always leaves the main area, in pixels. */
12
+ mainMinWidth?: number;
13
+ sx?: Sx;
14
+ children?: Snippet;
15
+ };
16
+ declare const AppShellPanel: import("svelte").Component<AppShellPanelProps, {}, "width">;
17
+ type AppShellPanel = ReturnType<typeof AppShellPanel>;
18
+ export default AppShellPanel;
@@ -0,0 +1,136 @@
1
+ <!--
2
+ The frame of an app: a sidebar, the main area, and an optional panel.
3
+
4
+ Narvi lays it out and moves it; the app decides what is remembered. The open
5
+ state is bindable and nothing is stored, and no shortcut is bound: wire ⌘B,
6
+ or whatever the app chooses, to `toggle()` from the context or AppShell.Toggle.
7
+ -->
8
+ <script lang="ts" module>
9
+ import * as stylex from '@stylexjs/stylex';
10
+ import type { Snippet } from 'svelte';
11
+ import type { HTMLAttributes } from 'svelte/elements';
12
+ import { attrs, type Sx } from '../../internal/sx.js';
13
+ import { colors, font } from '../../tokens.stylex.js';
14
+ import { setAppShellContext } from './context.js';
15
+
16
+ export type AppShellRootProps = Omit<HTMLAttributes<HTMLDivElement>, 'children'> & {
17
+ /** Whether the sidebar shows in full; closed, it shrinks to its rail. Bindable. */
18
+ sidebarOpen?: boolean;
19
+ /** The width of the sidebar's list, in rem or px. A rail, if there is one, is added to it. */
20
+ sidebarWidth?: string;
21
+ /** Below this window width, in pixels, the sidebar becomes a drawer over the page. */
22
+ narrowAt?: number;
23
+ /**
24
+ * Room kept clear at the top start corner of the window, for macOS's traffic
25
+ * lights in an Electron window with a hidden title bar. Headers start after it.
26
+ */
27
+ windowInset?: string;
28
+ /**
29
+ * True while something modal covers the whole app, such as a settings
30
+ * screen of its own: the shell is then inert, out of reach and unread.
31
+ */
32
+ covered?: boolean;
33
+ sx?: Sx;
34
+ ref?: HTMLDivElement | null;
35
+ /** An AppShell.Sidebar, an AppShell.Main and, if you like, an AppShell.Panel. */
36
+ children?: Snippet;
37
+ };
38
+
39
+ const styles = stylex.create({
40
+ root: {
41
+ position: 'relative',
42
+ display: 'flex',
43
+ height: '100dvh',
44
+ // `clip`, not `hidden`: scrollIntoView scrolls an overflow:hidden box, and
45
+ // in Eregion one stray button slid the whole window under its header
46
+ overflow: 'clip',
47
+ overscrollBehavior: 'none',
48
+ backgroundColor: colors.bg,
49
+ color: colors.text,
50
+ fontFamily: font.body,
51
+ fontSize: font.sizeMd,
52
+ lineHeight: font.leadingNormal
53
+ }
54
+ });
55
+ </script>
56
+
57
+ <script lang="ts">
58
+ let {
59
+ sidebarOpen = $bindable(true),
60
+ sidebarWidth = '16rem',
61
+ narrowAt = 768,
62
+ windowInset = '0px',
63
+ covered = false,
64
+ sx,
65
+ class: className,
66
+ ref = $bindable(null),
67
+ children,
68
+ ...rest
69
+ }: AppShellRootProps = $props();
70
+
71
+ const uid = $props.id();
72
+ let narrow = $state(false);
73
+ let drawer = $state(false);
74
+ let rail = $state(false);
75
+
76
+ $effect(() => {
77
+ const query = matchMedia(`(max-width: ${narrowAt - 0.02}px)`);
78
+ const update = () => {
79
+ narrow = query.matches;
80
+ if (!narrow) drawer = false;
81
+ };
82
+ update();
83
+ query.addEventListener('change', update);
84
+ return () => query.removeEventListener('change', update);
85
+ });
86
+
87
+ const open = $derived(narrow ? drawer : sidebarOpen);
88
+ // What the sidebar takes up now, so headers know how much of the window
89
+ // inset is still theirs to keep clear
90
+ const taken = $derived(
91
+ narrow
92
+ ? '0px'
93
+ : sidebarOpen
94
+ ? 'calc(var(--narvi-sidebar-width) + var(--narvi-rail-current))'
95
+ : 'var(--narvi-rail-current)'
96
+ );
97
+
98
+ setAppShellContext({
99
+ get open() {
100
+ return open;
101
+ },
102
+ get narrow() {
103
+ return narrow;
104
+ },
105
+ sidebarId: `${uid}-sidebar`,
106
+ toggle() {
107
+ if (narrow) drawer = !drawer;
108
+ else sidebarOpen = !sidebarOpen;
109
+ },
110
+ close() {
111
+ if (narrow) drawer = false;
112
+ else sidebarOpen = false;
113
+ },
114
+ setRail(present) {
115
+ rail = present;
116
+ }
117
+ });
118
+ </script>
119
+
120
+ <div
121
+ bind:this={ref}
122
+ inert={covered || undefined}
123
+ aria-hidden={covered || undefined}
124
+ data-slot="app-shell"
125
+ data-sidebar={open ? 'open' : 'closed'}
126
+ data-narrow={narrow || undefined}
127
+ style:--narvi-sidebar-width={sidebarWidth}
128
+ style:--narvi-rail-width="3.25rem"
129
+ style:--narvi-rail-current={rail ? 'var(--narvi-rail-width)' : '0px'}
130
+ style:--narvi-window-inset={windowInset}
131
+ style:--narvi-sidebar-taken={taken}
132
+ {...rest}
133
+ {...attrs([styles.root, sx], className)}
134
+ >
135
+ {@render children?.()}
136
+ </div>
@@ -0,0 +1,28 @@
1
+ import type { Snippet } from 'svelte';
2
+ import type { HTMLAttributes } from 'svelte/elements';
3
+ import { type Sx } from '../../internal/sx.js';
4
+ export type AppShellRootProps = Omit<HTMLAttributes<HTMLDivElement>, 'children'> & {
5
+ /** Whether the sidebar shows in full; closed, it shrinks to its rail. Bindable. */
6
+ sidebarOpen?: boolean;
7
+ /** The width of the sidebar's list, in rem or px. A rail, if there is one, is added to it. */
8
+ sidebarWidth?: string;
9
+ /** Below this window width, in pixels, the sidebar becomes a drawer over the page. */
10
+ narrowAt?: number;
11
+ /**
12
+ * Room kept clear at the top start corner of the window, for macOS's traffic
13
+ * lights in an Electron window with a hidden title bar. Headers start after it.
14
+ */
15
+ windowInset?: string;
16
+ /**
17
+ * True while something modal covers the whole app, such as a settings
18
+ * screen of its own: the shell is then inert, out of reach and unread.
19
+ */
20
+ covered?: boolean;
21
+ sx?: Sx;
22
+ ref?: HTMLDivElement | null;
23
+ /** An AppShell.Sidebar, an AppShell.Main and, if you like, an AppShell.Panel. */
24
+ children?: Snippet;
25
+ };
26
+ declare const AppShellRoot: import("svelte").Component<AppShellRootProps, {}, "ref" | "sidebarOpen">;
27
+ type AppShellRoot = ReturnType<typeof AppShellRoot>;
28
+ export default AppShellRoot;