@speakeasy-api/moonshine 2.0.0-alpha.1 → 2.0.0-alpha.3

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 (330) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +49 -23
  3. package/package.json +33 -50
  4. package/scripts/generate-utility-docs.js +324 -0
  5. package/src/assets/icons/external/github.svg +3 -0
  6. package/src/assets/icons/external/maven.svg +152 -0
  7. package/src/assets/icons/external/npm.svg +4 -0
  8. package/src/assets/icons/external/nuget.svg +5 -0
  9. package/src/assets/icons/external/packagist.svg +1 -0
  10. package/src/assets/icons/external/pypi.svg +182 -0
  11. package/src/assets/icons/external/rubygems.svg +14 -0
  12. package/src/assets/icons/external/terraform.svg +1 -0
  13. package/src/assets/icons/languages/csharp.svg +1 -0
  14. package/src/assets/icons/languages/go.svg +1 -0
  15. package/src/assets/icons/languages/java.svg +1 -0
  16. package/src/assets/icons/languages/json.svg +2 -0
  17. package/src/assets/icons/languages/php.svg +1 -0
  18. package/src/assets/icons/languages/postman.svg +3 -0
  19. package/src/assets/icons/languages/python.svg +1 -0
  20. package/src/assets/icons/languages/ruby.svg +1 -0
  21. package/src/assets/icons/languages/swift.svg +1 -0
  22. package/src/assets/icons/languages/terraform.svg +1 -0
  23. package/src/assets/icons/languages/typescript.svg +1 -0
  24. package/src/assets/icons/languages/unity.svg +1 -0
  25. package/src/base.css +12 -12
  26. package/src/components/AIChat/AIChatContainer.tsx +71 -0
  27. package/src/components/AIChat/AIChatMessage.tsx +135 -0
  28. package/src/components/AIChat/AIChatMessageComposer.tsx +175 -0
  29. package/src/components/AIChat/AIChatMessageList.tsx +34 -0
  30. package/src/components/AIChat/AIChatModelSelector.tsx +159 -0
  31. package/src/components/AIChat/componentsTypes.ts +36 -0
  32. package/src/components/AIChat/context.ts +15 -0
  33. package/src/components/AIChat/index.ts +12 -0
  34. package/src/components/AIChat/parts/AIChatMessageFilePart.tsx +129 -0
  35. package/src/components/AIChat/parts/AIChatMessageReasoningPart.tsx +23 -0
  36. package/src/components/AIChat/parts/AIChatMessageSourcePart.tsx +58 -0
  37. package/src/components/AIChat/parts/AIChatMessageTextPart.tsx +33 -0
  38. package/src/components/AIChat/parts/AIChatMessageToolInvocationPart.tsx +53 -0
  39. package/src/components/AIChat/parts/AIChatMessageToolPart.tsx +395 -0
  40. package/src/components/AIChat/parts/AIChatMessageToolResultPart.tsx +46 -0
  41. package/src/components/AIChat/toolCallApproval.ts +61 -0
  42. package/src/components/AIChat/types.ts +97 -0
  43. package/src/components/ActionBar/index.tsx +184 -0
  44. package/src/components/Alert/index.tsx +118 -0
  45. package/src/components/Alert/types.ts +12 -0
  46. package/src/components/AppLayout/context.tsx +31 -0
  47. package/src/components/AppLayout/index.tsx +550 -0
  48. package/src/components/AppLayout/provider.tsx +40 -0
  49. package/src/components/AppLayout/useAppLayoutKeys.ts +26 -0
  50. package/src/components/Badge/index.tsx +227 -0
  51. package/src/components/Button/index.tsx +531 -0
  52. package/src/components/Card/index.tsx +193 -0
  53. package/src/components/CodeEditorLayout/index.tsx +394 -0
  54. package/src/components/CodeEditorLayout/styles.module.css +8 -0
  55. package/src/components/CodeHighlight/Pre.tsx +63 -0
  56. package/src/components/CodePlayground/index.tsx +411 -0
  57. package/src/components/CodeSnippet/codeSnippet.css +97 -0
  58. package/src/components/CodeSnippet/index.tsx +224 -0
  59. package/src/components/Combobox/index.tsx +193 -0
  60. package/src/components/Command/index.tsx +152 -0
  61. package/src/components/Container/index.tsx +31 -0
  62. package/src/components/ContextDropdown/index.tsx +150 -0
  63. package/src/components/Dialog/index.tsx +123 -0
  64. package/src/components/DragNDrop/DragNDropArea.tsx +30 -0
  65. package/src/components/DragNDrop/DragOverlay.tsx +4 -0
  66. package/src/components/DragNDrop/Draggable.tsx +97 -0
  67. package/src/components/DragNDrop/Droppable.tsx +51 -0
  68. package/src/components/Dropdown/index.tsx +201 -0
  69. package/src/components/ExternalPill/index.tsx +58 -0
  70. package/src/components/Facepile/index.tsx +309 -0
  71. package/src/components/GradientCircle/gradientCircle.css +34 -0
  72. package/src/components/GradientCircle/index.tsx +143 -0
  73. package/src/components/Grid/index.tsx +150 -0
  74. package/src/components/Heading/index.tsx +54 -0
  75. package/src/components/HighlightedText/index.tsx +152 -0
  76. package/src/components/Icon/customIcons/createCustomLucideIcon.ts +25 -0
  77. package/src/components/Icon/customIcons/gems.ts +26 -0
  78. package/{dist/go-CiWl_aXI.mjs → src/components/Icon/customIcons/go.ts} +21 -19
  79. package/src/components/Icon/customIcons/index.ts +11 -0
  80. package/{dist/maven-DhmnGXoB.mjs → src/components/Icon/customIcons/maven.ts} +17 -15
  81. package/src/components/Icon/customIcons/npm.ts +19 -0
  82. package/{dist/nuget-5a2icRS2.mjs → src/components/Icon/customIcons/nuget.ts} +17 -15
  83. package/src/components/Icon/customIcons/packagist.ts +124 -0
  84. package/{dist/pypi-DsuRYjdK.mjs → src/components/Icon/customIcons/pypi.ts} +16 -14
  85. package/src/components/Icon/index.tsx +83 -0
  86. package/src/components/Icon/isIconName.ts +10 -0
  87. package/src/components/Icon/names.ts +14 -0
  88. package/src/components/IconButton/index.tsx +51 -0
  89. package/src/components/Input/index.tsx +98 -0
  90. package/src/components/KeyHint/index.tsx +118 -0
  91. package/src/components/LanguageIndicator/index.tsx +68 -0
  92. package/src/components/Link/index.tsx +153 -0
  93. package/src/components/LoggedInUserMenu/index.tsx +116 -0
  94. package/src/components/Logo/Animated.tsx +191 -0
  95. package/src/components/Logo/index.tsx +17 -0
  96. package/src/components/Logo/speakeasy-logo.riv +0 -0
  97. package/src/components/Logo/svgs/index.tsx +126 -0
  98. package/src/components/Modal/index.tsx +104 -0
  99. package/src/components/PageHeader/index.tsx +227 -0
  100. package/src/components/PageHeader/styles.module.css +27 -0
  101. package/src/components/Popover/index.tsx +35 -0
  102. package/src/components/PromptInput/index.tsx +372 -0
  103. package/src/components/PullRequestLink/index.tsx +64 -0
  104. package/src/components/ResizablePanel/index.tsx +119 -0
  105. package/src/components/Score/index.module.css +32 -0
  106. package/src/components/Score/index.tsx +268 -0
  107. package/src/components/ScrollArea/index.tsx +48 -0
  108. package/src/components/SegmentedButton/index.module.css +19 -0
  109. package/src/components/SegmentedButton/index.tsx +101 -0
  110. package/src/components/Select/index.tsx +159 -0
  111. package/src/components/Separator/index.tsx +23 -0
  112. package/src/components/Skeleton/index.tsx +61 -0
  113. package/src/components/Skeleton/skeleton.css +52 -0
  114. package/src/components/Stack/index.tsx +137 -0
  115. package/src/components/Subnav/index.tsx +315 -0
  116. package/src/components/Switch/index.tsx +29 -0
  117. package/src/components/Table/context/context.tsx +19 -0
  118. package/src/components/Table/context/tableProvider.tsx +39 -0
  119. package/src/components/Table/index.tsx +707 -0
  120. package/src/components/Table/styles.module.css +25 -0
  121. package/src/components/Tabs/index.tsx +87 -0
  122. package/src/components/TargetLanguageIcon/index.tsx +84 -0
  123. package/src/components/Text/index.tsx +59 -0
  124. package/src/components/ThemeSwitcher/index.tsx +118 -0
  125. package/src/components/Timeline/index.tsx +290 -0
  126. package/src/components/Tooltip/index.tsx +41 -0
  127. package/src/components/UserAvatar/index.tsx +87 -0
  128. package/src/components/UserAvatar/sizeMap.ts +12 -0
  129. package/src/components/Wizard/index.tsx +208 -0
  130. package/src/components/Wizard/types.ts +17 -0
  131. package/src/components/WorkspaceSelector/CreateOrg.tsx +95 -0
  132. package/src/components/WorkspaceSelector/CreateWorkspace.tsx +196 -0
  133. package/src/components/WorkspaceSelector/OrgList.tsx +115 -0
  134. package/src/components/WorkspaceSelector/OrgSelector.tsx +207 -0
  135. package/src/components/WorkspaceSelector/RecentWorkspaces.tsx +83 -0
  136. package/src/components/WorkspaceSelector/ScrollingList.tsx +84 -0
  137. package/src/components/WorkspaceSelector/SearchBox.tsx +40 -0
  138. package/src/components/WorkspaceSelector/WorkspaceItem.tsx +37 -0
  139. package/src/components/WorkspaceSelector/WorkspaceList.tsx +107 -0
  140. package/src/components/WorkspaceSelector/index.tsx +400 -0
  141. package/src/components/WorkspaceSelector/styles.css +74 -0
  142. package/src/components/__beta__/CLIWizard/index.tsx +357 -0
  143. package/src/components/__beta__/CLIWizard/terminal-command.tsx +108 -0
  144. package/src/components/__beta__/CLIWizard/terminal.tsx +83 -0
  145. package/src/components/__beta__/README.md +3 -0
  146. package/src/components/index.mdx +38 -0
  147. package/src/context/ConfigContext.tsx +43 -0
  148. package/src/context/ModalContext.tsx +118 -0
  149. package/src/context/theme.ts +1 -0
  150. package/src/hooks/useAppLayout.ts +10 -0
  151. package/src/hooks/useConfig.ts +10 -0
  152. package/src/hooks/useIsMounted.ts +13 -0
  153. package/src/hooks/useModal.tsx +10 -0
  154. package/src/hooks/useTailwindBreakpoint.ts +47 -0
  155. package/src/hooks/useTheme.ts +13 -0
  156. package/src/index.ts +234 -0
  157. package/src/lib/assert.ts +9 -0
  158. package/src/lib/codeUtils.ts +177 -0
  159. package/src/lib/debounce.ts +9 -0
  160. package/src/lib/responsiveMappers.ts +69 -0
  161. package/src/lib/responsiveUtils.ts +23 -0
  162. package/src/lib/storybookUtils.tsx +26 -0
  163. package/src/lib/typeUtils.ts +109 -0
  164. package/src/lib/utils.ts +85 -0
  165. package/src/styles/codeSyntax.css +59 -0
  166. package/src/styles/globals.css +51 -0
  167. package/src/types.ts +200 -0
  168. package/src/utilities.css +347 -6
  169. package/src/vite-env.d.ts +6 -0
  170. package/types/utilities.d.ts +43 -1
  171. package/dist/components/AIChat/AIChatContainer.d.ts +0 -25
  172. package/dist/components/AIChat/AIChatMessage.d.ts +0 -19
  173. package/dist/components/AIChat/AIChatMessageComposer.d.ts +0 -22
  174. package/dist/components/AIChat/AIChatMessageList.d.ts +0 -6
  175. package/dist/components/AIChat/AIChatModelSelector.d.ts +0 -14
  176. package/dist/components/AIChat/componentsTypes.d.ts +0 -11
  177. package/dist/components/AIChat/context.d.ts +0 -3
  178. package/dist/components/AIChat/index.d.ts +0 -12
  179. package/dist/components/AIChat/parts/AIChatMessageFilePart.d.ts +0 -7
  180. package/dist/components/AIChat/parts/AIChatMessageReasoningPart.d.ts +0 -5
  181. package/dist/components/AIChat/parts/AIChatMessageSourcePart.d.ts +0 -9
  182. package/dist/components/AIChat/parts/AIChatMessageTextPart.d.ts +0 -5
  183. package/dist/components/AIChat/parts/AIChatMessageToolInvocationPart.d.ts +0 -6
  184. package/dist/components/AIChat/parts/AIChatMessageToolPart.d.ts +0 -33
  185. package/dist/components/AIChat/parts/AIChatMessageToolResultPart.d.ts +0 -5
  186. package/dist/components/AIChat/toolCallApproval.d.ts +0 -15
  187. package/dist/components/AIChat/types.d.ts +0 -78
  188. package/dist/components/ActionBar/index.d.ts +0 -36
  189. package/dist/components/Alert/index.d.ts +0 -18
  190. package/dist/components/Alert/types.d.ts +0 -4
  191. package/dist/components/Badge/index.d.ts +0 -10
  192. package/dist/components/Button/index.d.ts +0 -11
  193. package/dist/components/Card/index.d.ts +0 -47
  194. package/dist/components/CodeEditorLayout/index.d.ts +0 -101
  195. package/dist/components/CodePlayground/index.d.ts +0 -108
  196. package/dist/components/CodePlayground/lineNumbers.d.ts +0 -2
  197. package/dist/components/CodePlayground/tokenTransitions.d.ts +0 -2
  198. package/dist/components/CodePlayground/wordWrap.d.ts +0 -2
  199. package/dist/components/CodeSnippet/index.d.ts +0 -50
  200. package/dist/components/Combobox/index.d.ts +0 -35
  201. package/dist/components/Command/index.d.ts +0 -80
  202. package/dist/components/Container/index.d.ts +0 -9
  203. package/dist/components/ContextDropdown/index.d.ts +0 -7
  204. package/dist/components/ContextDropdown/provider.d.ts +0 -22
  205. package/dist/components/ContextDropdown/useModal.d.ts +0 -11
  206. package/dist/components/Dialog/index.d.ts +0 -19
  207. package/dist/components/DragNDrop/DragNDropArea.d.ts +0 -8
  208. package/dist/components/DragNDrop/DragOverlay.d.ts +0 -1
  209. package/dist/components/DragNDrop/Draggable.d.ts +0 -29
  210. package/dist/components/DragNDrop/Droppable.d.ts +0 -28
  211. package/dist/components/Dropdown/index.d.ts +0 -27
  212. package/dist/components/ExternalPill/index.d.ts +0 -12
  213. package/dist/components/Facepile/index.d.ts +0 -16
  214. package/dist/components/GradientCircle/index.d.ts +0 -10
  215. package/dist/components/Grid/index.d.ts +0 -80
  216. package/dist/components/Heading/index.d.ts +0 -12
  217. package/dist/components/HighlightedText/index.d.ts +0 -19
  218. package/dist/components/Icon/customIcons/createCustomLucideIcon.d.ts +0 -3
  219. package/dist/components/Icon/customIcons/gems.d.ts +0 -2
  220. package/dist/components/Icon/customIcons/go.d.ts +0 -2
  221. package/dist/components/Icon/customIcons/index.d.ts +0 -10
  222. package/dist/components/Icon/customIcons/maven.d.ts +0 -2
  223. package/dist/components/Icon/customIcons/npm.d.ts +0 -2
  224. package/dist/components/Icon/customIcons/nuget.d.ts +0 -2
  225. package/dist/components/Icon/customIcons/packagist.d.ts +0 -2
  226. package/dist/components/Icon/customIcons/pypi.d.ts +0 -2
  227. package/dist/components/Icon/index.d.ts +0 -10
  228. package/dist/components/Icon/isIconName.d.ts +0 -2
  229. package/dist/components/Icon/names.d.ts +0 -6
  230. package/dist/components/Input/index.d.ts +0 -8
  231. package/dist/components/KeyHint/index.d.ts +0 -16
  232. package/dist/components/LanguageIndicator/index.d.ts +0 -7
  233. package/dist/components/Link/index.d.ts +0 -19
  234. package/dist/components/LoggedInUserMenu/index.d.ts +0 -17
  235. package/dist/components/Logo/Animated.d.ts +0 -7
  236. package/dist/components/Logo/index.d.ts +0 -7
  237. package/dist/components/Logo/svgs/index.d.ts +0 -6
  238. package/dist/components/Navbar/Slim.d.ts +0 -33
  239. package/dist/components/Navbar/index.d.ts +0 -15
  240. package/dist/components/PageHeader/index.d.ts +0 -45
  241. package/dist/components/Popover/index.d.ts +0 -8
  242. package/dist/components/PromptInput/index.d.ts +0 -55
  243. package/dist/components/PullRequestLink/index.d.ts +0 -10
  244. package/dist/components/ResizablePanel/index.d.ts +0 -26
  245. package/dist/components/Score/index.d.ts +0 -37
  246. package/dist/components/ScrollArea/index.d.ts +0 -5
  247. package/dist/components/Select/index.d.ts +0 -13
  248. package/dist/components/Separator/index.d.ts +0 -6
  249. package/dist/components/Skeleton/index.d.ts +0 -27
  250. package/dist/components/Stack/index.d.ts +0 -33
  251. package/dist/components/Subnav/index.d.ts +0 -12
  252. package/dist/components/Switch/index.d.ts +0 -4
  253. package/dist/components/Table/context/context.d.ts +0 -8
  254. package/dist/components/Table/context/tableProvider.d.ts +0 -6
  255. package/dist/components/Table/index.d.ts +0 -94
  256. package/dist/components/Tabs/index.d.ts +0 -21
  257. package/dist/components/TargetLanguageIcon/index.d.ts +0 -7
  258. package/dist/components/Text/index.d.ts +0 -19
  259. package/dist/components/ThemeSwitcher/index.d.ts +0 -5
  260. package/dist/components/Tooltip/index.d.ts +0 -8
  261. package/dist/components/UserAvatar/index.d.ts +0 -9
  262. package/dist/components/UserAvatar/sizeMap.d.ts +0 -3
  263. package/dist/components/Wizard/index.d.ts +0 -19
  264. package/dist/components/Wizard/types.d.ts +0 -15
  265. package/dist/components/WorkspaceSelector/CreateOrg.d.ts +0 -6
  266. package/dist/components/WorkspaceSelector/CreateWorkspace.d.ts +0 -17
  267. package/dist/components/WorkspaceSelector/OrgList.d.ts +0 -11
  268. package/dist/components/WorkspaceSelector/OrgSelector.d.ts +0 -13
  269. package/dist/components/WorkspaceSelector/RecentWorkspaces.d.ts +0 -11
  270. package/dist/components/WorkspaceSelector/ScrollingList.d.ts +0 -21
  271. package/dist/components/WorkspaceSelector/SearchBox.d.ts +0 -9
  272. package/dist/components/WorkspaceSelector/WorkspaceItem.d.ts +0 -9
  273. package/dist/components/WorkspaceSelector/WorkspaceList.d.ts +0 -10
  274. package/dist/components/WorkspaceSelector/index.d.ts +0 -34
  275. package/dist/components/__beta__/CLIWizard/index.d.ts +0 -21
  276. package/dist/components/__beta__/CLIWizard/terminal-command.d.ts +0 -19
  277. package/dist/components/__beta__/CLIWizard/terminal.d.ts +0 -26
  278. package/dist/context/ConfigContext.d.ts +0 -18
  279. package/dist/context/theme.d.ts +0 -1
  280. package/dist/createCustomLucideIcon-YlrRX5h9.mjs +0 -19
  281. package/dist/createCustomLucideIcon-YlrRX5h9.mjs.map +0 -1
  282. package/dist/gems-BcsO9cXq.mjs +0 -24
  283. package/dist/gems-BcsO9cXq.mjs.map +0 -1
  284. package/dist/github-kgjMtfE7.mjs +0 -11
  285. package/dist/github-kgjMtfE7.mjs.map +0 -1
  286. package/dist/go-CiWl_aXI.mjs.map +0 -1
  287. package/dist/hooks/useConfig.d.ts +0 -2
  288. package/dist/hooks/useIsMounted.d.ts +0 -1
  289. package/dist/hooks/useTailwindBreakpoint.d.ts +0 -3
  290. package/dist/hooks/useTheme.d.ts +0 -6
  291. package/dist/index-COXZ9O-g.mjs +0 -50882
  292. package/dist/index-COXZ9O-g.mjs.map +0 -1
  293. package/dist/index.d.ts +0 -73
  294. package/dist/lib/assert.d.ts +0 -2
  295. package/dist/lib/codeUtils.d.ts +0 -35
  296. package/dist/lib/debounce.d.ts +0 -1
  297. package/dist/lib/responsiveMappers.d.ts +0 -10
  298. package/dist/lib/responsiveUtils.d.ts +0 -3
  299. package/dist/lib/storybookUtils.d.ts +0 -5
  300. package/dist/lib/typeUtils.d.ts +0 -24
  301. package/dist/lib/utils.d.ts +0 -23
  302. package/dist/lucide-icons-BDw0imyx.mjs +0 -28054
  303. package/dist/lucide-icons-BDw0imyx.mjs.map +0 -1
  304. package/dist/maven-DhmnGXoB.mjs.map +0 -1
  305. package/dist/maven-W_nkSDNW.mjs +0 -107
  306. package/dist/maven-W_nkSDNW.mjs.map +0 -1
  307. package/dist/moonshine.es.js +0 -114
  308. package/dist/moonshine.es.js.map +0 -1
  309. package/dist/npm-BWTcVvFH.mjs +0 -11
  310. package/dist/npm-BWTcVvFH.mjs.map +0 -1
  311. package/dist/npm-CvQ4GKW4.mjs +0 -17
  312. package/dist/npm-CvQ4GKW4.mjs.map +0 -1
  313. package/dist/nuget-5a2icRS2.mjs.map +0 -1
  314. package/dist/nuget-CV5HU1JR.mjs +0 -11
  315. package/dist/nuget-CV5HU1JR.mjs.map +0 -1
  316. package/dist/packagist-CET6q9hi.mjs +0 -118
  317. package/dist/packagist-CET6q9hi.mjs.map +0 -1
  318. package/dist/packagist-D01fn9N_.mjs +0 -11
  319. package/dist/packagist-D01fn9N_.mjs.map +0 -1
  320. package/dist/pypi-DLh6kIJe.mjs +0 -11
  321. package/dist/pypi-DLh6kIJe.mjs.map +0 -1
  322. package/dist/pypi-DsuRYjdK.mjs.map +0 -1
  323. package/dist/rubygems-DeiNjcDV.mjs +0 -11
  324. package/dist/rubygems-DeiNjcDV.mjs.map +0 -1
  325. package/dist/speakeasy-logo-ByBTXLWb.mjs +0 -5
  326. package/dist/speakeasy-logo-ByBTXLWb.mjs.map +0 -1
  327. package/dist/style.css +0 -1
  328. package/dist/terraform-C4aktQ0o.mjs +0 -11
  329. package/dist/terraform-C4aktQ0o.mjs.map +0 -1
  330. package/dist/types.d.ts +0 -80
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Speakeasy
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,6 +1,7 @@
1
1
  # 🥃 Moonshine 🥃
2
2
 
3
3
  [![NPM](https://img.shields.io/badge/npm-moonshine@latest-blue)](https://www.npmjs.com/package/@speakeasy-api/moonshine)
4
+ <a href="https://moonshine.speakeasy.com/" target="_blank"><img src="https://raw.githubusercontent.com/storybooks/brand/master/badge/badge-storybook.svg"></a>
4
5
 
5
6
  Speakeasy's design system.
6
7
 
@@ -10,7 +11,12 @@ Speakeasy's design system.
10
11
 
11
12
  ```bash
12
13
  pnpm add @speakeasy-api/moonshine
13
- pnpm add -D tw-animate-css @tailwindcss/typography
14
+ ```
15
+
16
+ Make sure you install the peer dependencies of this package:
17
+
18
+ ```
19
+ pnpm add lucide-react @dnd-kit/core @dnd-kit/modifiers @dnd-kit/utilities react react-dom motion react-markdown remark-gfm shiki react-virtuoso react-resizable-panels @rive-app/react-canvas-lite ai
14
20
  ```
15
21
 
16
22
  ### 2. Configure Tailwind CSS
@@ -27,7 +33,7 @@ Add this to the top of your project's CSS file where you configure Tailwind:
27
33
 
28
34
  **Note:** The `@reference` directive is required for Tailwind v4 to recognize Moonshine's custom utilities and make them available in your project.
29
35
 
30
- ### 3. Import Moonshine's Compiled CSS
36
+ ### 3. Import Moonshine's CSS
31
37
 
32
38
  In your main app file (or root layout):
33
39
 
@@ -35,35 +41,36 @@ In your main app file (or root layout):
35
41
  import '@speakeasy-api/moonshine/moonshine.css'
36
42
  ```
37
43
 
44
+ **Note:** Moonshine distributes as pure TypeScript, and Vite will process the CSS from source automatically.
45
+
38
46
  ### 4. Set up the Provider
39
47
 
40
48
  Wrap your application in the `MoonshineConfigProvider` component:
41
49
 
42
50
  ```tsx
43
51
  import { MoonshineConfigProvider } from '@speakeasy-api/moonshine'
44
-
45
- <MoonshineConfigProvider themeElement={document.documentElement}>
52
+ ;<MoonshineConfigProvider themeElement={document.documentElement}>
46
53
  <App />
47
54
  </MoonshineConfigProvider>
48
55
  ```
49
56
 
50
- ### 5. Configure Custom Fonts (Optional)
57
+ ### 6. Configure Custom Fonts (Optional)
51
58
 
52
59
  Moonshine uses custom fonts (Diatype, Tobias). If you have licenses for these fonts, add them to your project:
53
60
 
54
61
  ```css
55
62
  /* In your global CSS */
56
63
  @font-face {
57
- font-family: "Diatype";
58
- src: url("/fonts/diatype/ABCDiatype-Regular.woff2") format("woff2");
64
+ font-family: 'Diatype';
65
+ src: url('/fonts/diatype/ABCDiatype-Regular.woff2') format('woff2');
59
66
  font-weight: 400;
60
67
  font-style: normal;
61
68
  font-display: block;
62
69
  }
63
70
 
64
71
  @font-face {
65
- font-family: "Diatype";
66
- src: url("/fonts/diatype/ABCDiatype-Light.woff2") format("woff2");
72
+ font-family: 'Diatype';
73
+ src: url('/fonts/diatype/ABCDiatype-Light.woff2') format('woff2');
67
74
  font-weight: 300;
68
75
  font-style: normal;
69
76
  font-display: block;
@@ -74,15 +81,13 @@ Moonshine uses custom fonts (Diatype, Tobias). If you have licenses for these fo
74
81
 
75
82
  If you don't have these fonts, the design system will fall back to system fonts.
76
83
 
77
- ### 6. Use Components and Utilities
84
+ ### 7. Use Components and Utilities
78
85
 
79
86
  ```tsx
80
87
  import { Grid } from '@speakeasy-api/moonshine'
81
88
 
82
89
  // Use semantic utility classes
83
- <div className="text-heading-lg bg-surface-primary">
84
- Hello Moonshine!
85
- </div>
90
+ ;<div className="text-heading-lg bg-surface-primary">Hello Moonshine!</div>
86
91
  ```
87
92
 
88
93
  ### TypeScript Support for Utility Classes
@@ -102,13 +107,14 @@ const styles: MoonshineClasses = 'text-heading-lg' // ✅ Autocompletes!
102
107
  ```
103
108
 
104
109
  The types are automatically generated during the build process and include:
110
+
105
111
  - All custom utilities (`text-heading-xl`, `bg-surface-primary`, etc.)
106
112
  - All semantic color utilities (`bg-warning`, `text-success`, etc.)
107
113
  - Full IntelliSense support in your IDE
108
114
 
109
115
  💡 **Tip**: This prevents typos and helps you discover available utilities without leaving your editor!
110
116
 
111
- The package is built with [vite](https://vitejs.dev/), and is distributed in both [ESM](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules) and [CommonJS](https://nodejs.org/api/modules.html#modules-commonjs) formats.
117
+ The package is built with [vite](https://vitejs.dev/) and distributed as **pure TypeScript**. Consumers using Vite will transpile the TypeScript on-the-fly, eliminating the need for a separate build step when linking the library locally.
112
118
 
113
119
  ### Using Tailwind Merge
114
120
 
@@ -124,11 +130,8 @@ return (
124
130
  Lorem Ipsum
125
131
  </span>
126
132
  )
127
-
128
133
  ```
129
134
 
130
-
131
-
132
135
  ## Design System Architecture
133
136
 
134
137
  Moonshine is a utility-first design system built on top of [Tailwind CSS v4](https://tailwindcss.com/). It provides a curated set of design tokens and utilities that enforce consistency while preventing common pitfalls.
@@ -138,11 +141,13 @@ Moonshine is a utility-first design system built on top of [Tailwind CSS v4](htt
138
141
  Our CSS is organized into three main files:
139
142
 
140
143
  1. **`base.css`** - Primitive design tokens (colors, fonts, spacing scales)
144
+
141
145
  - Contains raw values that should **not** be used directly in components
142
146
  - Defines theme-aware semantic tokens that adapt to light/dark mode
143
147
  - Houses base element styles and resets
144
148
 
145
149
  2. **`utilities.css`** - The public API of our design system
150
+
146
151
  - Exposes carefully crafted utility classes like `text-heading-xl`, `bg-surface-primary`
147
152
  - Enforces typography combinations to prevent arbitrary text styling
148
153
  - Provides semantic color utilities that automatically handle theming
@@ -162,11 +167,13 @@ Our CSS is organized into three main files:
162
167
  ### Usage Guidelines
163
168
 
164
169
  ✅ **Do:**
170
+
165
171
  - Use semantic utilities: `bg-warning`, `text-body`, `border-error`
166
172
  - Leverage pre-defined typography scales: `text-heading-xl`, `text-body-sm`
167
173
  - Stick to the exposed utility classes in `utilities.css`
168
174
 
169
175
  ❌ **Don't:**
176
+
170
177
  - Access raw color values: `bg-[var(--color-neutral-200)]`
171
178
  - Create arbitrary combinations: `text-[1.813rem] leading-[1.5]`
172
179
  - Override the design system without discussing with the team
@@ -176,16 +183,21 @@ For more technical details about the CSS architecture, see [CLAUDE.md](./CLAUDE.
176
183
  ## Troubleshooting
177
184
 
178
185
  ### Utilities not working
186
+
179
187
  Make sure you've added the `@reference` directive to your global CSS file. This is required for Tailwind v4 to pick up Moonshine's utility classes.
180
188
 
181
189
  ### Fonts not loading
190
+
182
191
  The custom fonts (Diatype, Tobias) require licenses. If you don't have them, the system will use fallback fonts. Ensure your font files are in the correct path if you do have licenses.
183
192
 
184
193
  ### Dark mode not working
194
+
185
195
  Ensure the `themeElement` prop in `MoonshineConfigProvider` points to the element where your `dark` class is applied (usually `document.documentElement`).
186
196
 
187
197
  ### TypeScript types not found
198
+
188
199
  Make sure you're importing from the correct path:
200
+
189
201
  ```tsx
190
202
  import type { MoonshineClasses } from '@speakeasy-api/moonshine/types/utilities'
191
203
  ```
@@ -196,8 +208,7 @@ import type { MoonshineClasses } from '@speakeasy-api/moonshine/types/utilities'
196
208
 
197
209
  1. Clone the repository
198
210
  2. Run `pnpm install` to install the dependencies
199
- 3. Run `pnpm build` to build the package
200
- 4. Run `pnpm storybook` to start the storybook server
211
+ 3. Run `pnpm storybook` to start the storybook server
201
212
 
202
213
  If you'd like to develop Moonshine in tandem with another app, you can follow the steps outlined below in the **Linking the library locally** section.
203
214
 
@@ -254,18 +265,33 @@ Run `pnpm test` to run the tests.
254
265
 
255
266
  ### Linking the library locally
256
267
 
257
- Run `pnpm build:watch` within Moonshine to build the library and watch for changes.
268
+ Since Moonshine distributes as pure TypeScript, linking is much simpler - no build step required!
258
269
 
259
- Then run `pnpm link ../path/to/moonshine` within the app that will use the library. For the registry `webapp` directory (assuming a standard cloning setup where `moonshine` is a sibling of the registry repo), it would be:
270
+ 1. **Link the library** from within your consuming app:
260
271
 
261
272
  ```bash
262
273
  pnpm link ../path/to/moonshine
263
274
  ```
264
275
 
265
- The lockfile file within your app should referenced the linked copy:
276
+ For example, if `moonshine` is a sibling of your app directory:
277
+
278
+ ```bash
279
+ pnpm link ../moonshine
280
+ ```
281
+
282
+ 2. **Start your dev server** - Vite will automatically transpile the TypeScript from the linked library.
283
+
284
+ The lockfile within your app should reference the linked copy:
266
285
 
267
286
  ```yaml
268
287
  '@speakeasy-api/moonshine':
269
- specifier: ^0.43.1
288
+ specifier: ^2.0.0-alpha.1
270
289
  version: link:../../../../moonshine
271
290
  ```
291
+
292
+ **Benefits of pure TypeScript distribution:**
293
+
294
+ - ✅ No need to run `tsc` in watch mode
295
+ - ✅ No build conflicts between library and consumer
296
+ - ✅ Instant updates when you change source files
297
+ - ✅ Simpler development workflow
package/package.json CHANGED
@@ -1,20 +1,22 @@
1
1
  {
2
2
  "name": "@speakeasy-api/moonshine",
3
- "version": "2.0.0-alpha.1",
3
+ "version": "2.0.0-alpha.3",
4
4
  "packageManager": "pnpm@9.0.0",
5
5
  "description": "Speakeasy's design system Moonshine",
6
- "main": "dist/moonshine.cjs.js",
7
- "module": "dist/moonshine.es.js",
8
- "types": "dist/index.d.ts",
6
+ "sideEffects": false,
7
+ "main": "src/index.ts",
8
+ "module": "src/index.ts",
9
+ "types": "src/index.ts",
9
10
  "exports": {
10
11
  ".": {
11
- "types": "./dist/index.d.ts",
12
- "require": "./dist/moonshine.cjs.js",
13
- "import": "./dist/moonshine.es.js"
12
+ "types": "./src/index.ts",
13
+ "import": "./src/index.ts",
14
+ "require": "./src/index.ts"
14
15
  },
15
16
  "./moonshine.css": {
16
- "require": "./dist/style.css",
17
- "import": "./dist/style.css"
17
+ "require": "./src/global.css",
18
+ "import": "./src/global.css",
19
+ "default": "./src/global.css"
18
20
  },
19
21
  "./src/global.css": {
20
22
  "require": "./src/global.css",
@@ -25,51 +27,32 @@
25
27
  "type": "git",
26
28
  "url": "https://github.com/speakeasy-api/moonshine.git"
27
29
  },
28
- "files": [
29
- "dist",
30
- "src/global.css",
31
- "src/base.css",
32
- "src/utilities.css",
33
- "types"
34
- ],
35
30
  "scripts": {
36
- "clean": "rimraf dist",
37
- "build": "pnpm clean && vite build",
38
- "build:watch": "vite build --watch --mode development",
39
31
  "type-check": "tsc --noEmit --skipLibCheck",
40
- "prepack": "pnpm build",
32
+ "prepack": "pnpm type-check",
41
33
  "storybook": "storybook dev -p 6006",
42
34
  "build-storybook": "storybook build",
43
35
  "chromatic": "chromatic",
44
36
  "lint": "eslint",
45
37
  "lint:fix": "eslint --fix",
46
38
  "test": "vitest",
47
- "visualize": "npx vite-bundle-visualizer",
48
- "generate:docs": "node scripts/generate-utility-docs.js",
49
- "postbuild": "pnpm generate:docs"
39
+ "generate:docs": "node scripts/generate-utility-docs.js"
50
40
  },
51
41
  "author": "Speakeasy",
52
42
  "license": "ISC",
53
43
  "devDependencies": {
54
- "@chromatic-com/storybook": "^3.2.6",
44
+ "@chromatic-com/storybook": "^4.1.1",
55
45
  "@eslint/compat": "^1.2.2",
56
46
  "@eslint/js": "^9.13.0",
57
47
  "@faker-js/faker": "^9.2.0",
58
48
  "@semantic-release/commit-analyzer": "^13.0.0",
59
49
  "@semantic-release/npm": "^12.0.1",
60
50
  "@semantic-release/release-notes-generator": "^14.0.1",
61
- "@storybook/addon-essentials": "^8.6.9",
62
- "@storybook/addon-interactions": "^8.6.9",
63
- "@storybook/addon-links": "^8.6.9",
64
- "@storybook/addon-themes": "^8.6.9",
65
- "@storybook/blocks": "^8.6.9",
66
- "@storybook/builder-vite": "^8.6.9",
67
- "@storybook/manager-api": "^8.6.9",
68
- "@storybook/preview-api": "^8.6.9",
69
- "@storybook/react": "^8.6.9",
70
- "@storybook/react-vite": "^8.6.9",
71
- "@storybook/test": "^8.6.9",
72
- "@storybook/theming": "^8.6.9",
51
+ "@storybook/addon-docs": "^9.1.7",
52
+ "@storybook/addon-links": "^9.1.7",
53
+ "@storybook/addon-themes": "^9.1.7",
54
+ "@storybook/builder-vite": "^9.1.7",
55
+ "@storybook/react-vite": "^9.1.7",
73
56
  "@tailwindcss/typography": "^0.5.16",
74
57
  "@tailwindcss/vite": "^4.1.2",
75
58
  "@testing-library/jest-dom": "^6.6.3",
@@ -84,6 +67,7 @@
84
67
  "eslint-config-prettier": "^9.1.0",
85
68
  "eslint-plugin-prettier": "^5.2.1",
86
69
  "eslint-plugin-react-refresh": "^0.4.14",
70
+ "eslint-plugin-storybook": "9.1.7",
87
71
  "eslint-plugin-unused-imports": "^4.1.4",
88
72
  "jsdom": "^25.0.1",
89
73
  "postcss": "^8.4.47",
@@ -91,7 +75,7 @@
91
75
  "prettier-plugin-tailwindcss": "^0.6.11",
92
76
  "rimraf": "^6.0.1",
93
77
  "semantic-release": "^24.2.0",
94
- "storybook": "^8.6.9",
78
+ "storybook": "^9.1.7",
95
79
  "svgo": "^3.3.2",
96
80
  "tsx": "^4.19.3",
97
81
  "typescript": "^5.6.3",
@@ -103,18 +87,26 @@
103
87
  "vitest": "^2.1.4"
104
88
  },
105
89
  "peerDependencies": {
90
+ "ai": "^4.3.15",
91
+ "@dnd-kit/core": "^6.1.0",
92
+ "@dnd-kit/modifiers": "^7.0.0",
93
+ "@dnd-kit/utilities": "^3.2.2",
94
+ "@rive-app/react-canvas-lite": "^4.22.0",
106
95
  "@types/react": "^18.3.11 || ^19.0.0",
107
96
  "lucide-react": "^0.453.0",
97
+ "motion": "^12.6.3",
108
98
  "react": "^18.3.1 || ^19.0.0",
109
- "react-dom": "^18.3.1 || ^19.0.0"
99
+ "react-dom": "^18.3.1 || ^19.0.0",
100
+ "react-markdown": "^10.1.0",
101
+ "react-resizable-panels": "^2.1.7",
102
+ "react-virtuoso": "^4.12.0",
103
+ "remark-gfm": "^4.0.1",
104
+ "shiki": "^1.27.0"
110
105
  },
111
106
  "publishConfig": {
112
107
  "access": "public"
113
108
  },
114
109
  "dependencies": {
115
- "@dnd-kit/core": "^6.3.1",
116
- "@dnd-kit/modifiers": "^9.0.0",
117
- "@dnd-kit/utilities": "^3.2.2",
118
110
  "@radix-ui/react-collapsible": "^1.1.3",
119
111
  "@radix-ui/react-dialog": "^1.1.6",
120
112
  "@radix-ui/react-dropdown-menu": "^2.1.6",
@@ -124,19 +116,10 @@
124
116
  "@radix-ui/react-slot": "^1.1.2",
125
117
  "@radix-ui/react-switch": "^1.1.3",
126
118
  "@radix-ui/react-tooltip": "^1.1.8",
127
- "@rive-app/react-canvas-lite": "^4.22.0",
128
- "ai": "^4.3.15",
129
119
  "class-variance-authority": "^0.7.0",
130
120
  "clsx": "^2.1.1",
131
121
  "cmdk": "^1.1.1",
132
- "codehike": "^1.0.4",
133
122
  "date-fns": "^4.1.0",
134
- "framer-motion": "^11.11.11",
135
- "motion": "^12.6.3",
136
- "react-markdown": "^10.1.0",
137
- "react-resizable-panels": "^2.1.7",
138
- "react-virtuoso": "^4.12.0",
139
- "remark-gfm": "^4.0.1",
140
123
  "tailwind-merge": "^3.0.2",
141
124
  "tailwindcss": "^4.1.2",
142
125
  "tw-animate-css": "^1.2.4"