@speakeasy-api/moonshine 1.33.4 → 2.0.0-alpha.2

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/README.md +26 -10
  2. package/package.json +12 -23
  3. package/scripts/generate-utility-docs.js +324 -0
  4. package/src/assets/icons/external/github.svg +3 -0
  5. package/src/assets/icons/external/maven.svg +152 -0
  6. package/src/assets/icons/external/npm.svg +4 -0
  7. package/src/assets/icons/external/nuget.svg +5 -0
  8. package/src/assets/icons/external/packagist.svg +1 -0
  9. package/src/assets/icons/external/pypi.svg +182 -0
  10. package/src/assets/icons/external/rubygems.svg +14 -0
  11. package/src/assets/icons/external/terraform.svg +1 -0
  12. package/src/assets/icons/languages/csharp.svg +1 -0
  13. package/src/assets/icons/languages/go.svg +1 -0
  14. package/src/assets/icons/languages/java.svg +1 -0
  15. package/src/assets/icons/languages/json.svg +2 -0
  16. package/src/assets/icons/languages/php.svg +1 -0
  17. package/src/assets/icons/languages/postman.svg +3 -0
  18. package/src/assets/icons/languages/python.svg +1 -0
  19. package/src/assets/icons/languages/ruby.svg +1 -0
  20. package/src/assets/icons/languages/swift.svg +1 -0
  21. package/src/assets/icons/languages/terraform.svg +1 -0
  22. package/src/assets/icons/languages/typescript.svg +1 -0
  23. package/src/assets/icons/languages/unity.svg +1 -0
  24. package/src/components/AIChat/AIChatContainer.tsx +71 -0
  25. package/src/components/AIChat/AIChatMessage.tsx +135 -0
  26. package/src/components/AIChat/AIChatMessageComposer.tsx +175 -0
  27. package/src/components/AIChat/AIChatMessageList.tsx +34 -0
  28. package/src/components/AIChat/AIChatModelSelector.tsx +159 -0
  29. package/src/components/AIChat/componentsTypes.ts +36 -0
  30. package/src/components/AIChat/context.ts +15 -0
  31. package/src/components/AIChat/index.ts +12 -0
  32. package/src/components/AIChat/parts/AIChatMessageFilePart.tsx +129 -0
  33. package/src/components/AIChat/parts/AIChatMessageReasoningPart.tsx +23 -0
  34. package/src/components/AIChat/parts/AIChatMessageSourcePart.tsx +58 -0
  35. package/src/components/AIChat/parts/AIChatMessageTextPart.tsx +33 -0
  36. package/src/components/AIChat/parts/AIChatMessageToolInvocationPart.tsx +53 -0
  37. package/src/components/AIChat/parts/AIChatMessageToolPart.tsx +395 -0
  38. package/src/components/AIChat/parts/AIChatMessageToolResultPart.tsx +46 -0
  39. package/src/components/AIChat/toolCallApproval.ts +61 -0
  40. package/src/components/AIChat/types.ts +97 -0
  41. package/src/components/ActionBar/index.tsx +184 -0
  42. package/src/components/Alert/index.tsx +118 -0
  43. package/src/components/Alert/types.ts +12 -0
  44. package/src/components/AppLayout/context.tsx +31 -0
  45. package/src/components/AppLayout/index.tsx +550 -0
  46. package/src/components/AppLayout/provider.tsx +40 -0
  47. package/src/components/AppLayout/useAppLayoutKeys.ts +26 -0
  48. package/src/components/Badge/index.tsx +227 -0
  49. package/src/components/Button/index.tsx +531 -0
  50. package/src/components/Card/index.tsx +193 -0
  51. package/src/components/CodeEditorLayout/index.tsx +394 -0
  52. package/src/components/CodeEditorLayout/styles.module.css +8 -0
  53. package/src/components/CodeHighlight/Pre.tsx +63 -0
  54. package/src/components/CodePlayground/index.tsx +411 -0
  55. package/src/components/CodeSnippet/codeSnippet.css +97 -0
  56. package/src/components/CodeSnippet/index.tsx +224 -0
  57. package/src/components/Combobox/index.tsx +193 -0
  58. package/src/components/Command/index.tsx +152 -0
  59. package/src/components/Container/index.tsx +31 -0
  60. package/src/components/ContextDropdown/index.tsx +150 -0
  61. package/src/components/Dialog/index.tsx +123 -0
  62. package/src/components/DragNDrop/DragNDropArea.tsx +30 -0
  63. package/src/components/DragNDrop/DragOverlay.tsx +4 -0
  64. package/src/components/DragNDrop/Draggable.tsx +97 -0
  65. package/src/components/DragNDrop/Droppable.tsx +51 -0
  66. package/src/components/Dropdown/index.tsx +201 -0
  67. package/src/components/ExternalPill/index.tsx +58 -0
  68. package/src/components/Facepile/index.tsx +309 -0
  69. package/src/components/GradientCircle/gradientCircle.css +34 -0
  70. package/src/components/GradientCircle/index.tsx +143 -0
  71. package/src/components/Grid/index.tsx +150 -0
  72. package/src/components/Heading/index.tsx +54 -0
  73. package/src/components/HighlightedText/index.tsx +152 -0
  74. package/src/components/Icon/customIcons/createCustomLucideIcon.ts +25 -0
  75. package/src/components/Icon/customIcons/gems.ts +26 -0
  76. package/{dist/go-DsW1bFpz.mjs → src/components/Icon/customIcons/go.ts} +21 -19
  77. package/src/components/Icon/customIcons/index.ts +11 -0
  78. package/{dist/maven-Dub5liK1.mjs → src/components/Icon/customIcons/maven.ts} +17 -15
  79. package/src/components/Icon/customIcons/npm.ts +19 -0
  80. package/{dist/nuget-D86y5HDl.mjs → src/components/Icon/customIcons/nuget.ts} +17 -15
  81. package/src/components/Icon/customIcons/packagist.ts +124 -0
  82. package/{dist/pypi-2SUX-2OR.mjs → src/components/Icon/customIcons/pypi.ts} +16 -14
  83. package/src/components/Icon/index.tsx +83 -0
  84. package/src/components/Icon/isIconName.ts +10 -0
  85. package/src/components/Icon/names.ts +14 -0
  86. package/src/components/IconButton/index.tsx +51 -0
  87. package/src/components/Input/index.tsx +98 -0
  88. package/src/components/KeyHint/index.tsx +118 -0
  89. package/src/components/LanguageIndicator/index.tsx +68 -0
  90. package/src/components/Link/index.tsx +153 -0
  91. package/src/components/LoggedInUserMenu/index.tsx +116 -0
  92. package/src/components/Logo/Animated.tsx +191 -0
  93. package/src/components/Logo/index.tsx +17 -0
  94. package/src/components/Logo/speakeasy-logo.riv +0 -0
  95. package/src/components/Logo/svgs/index.tsx +126 -0
  96. package/src/components/Modal/index.tsx +104 -0
  97. package/src/components/PageHeader/index.tsx +227 -0
  98. package/src/components/PageHeader/styles.module.css +27 -0
  99. package/src/components/Popover/index.tsx +35 -0
  100. package/src/components/PromptInput/index.tsx +372 -0
  101. package/src/components/PullRequestLink/index.tsx +64 -0
  102. package/src/components/ResizablePanel/index.tsx +119 -0
  103. package/src/components/Score/index.module.css +32 -0
  104. package/src/components/Score/index.tsx +268 -0
  105. package/src/components/ScrollArea/index.tsx +48 -0
  106. package/src/components/SegmentedButton/index.module.css +19 -0
  107. package/src/components/SegmentedButton/index.tsx +101 -0
  108. package/src/components/Select/index.tsx +159 -0
  109. package/src/components/Separator/index.tsx +23 -0
  110. package/src/components/Skeleton/index.tsx +61 -0
  111. package/src/components/Skeleton/skeleton.css +52 -0
  112. package/src/components/Stack/index.tsx +137 -0
  113. package/src/components/Subnav/index.tsx +315 -0
  114. package/src/components/Switch/index.tsx +29 -0
  115. package/src/components/Table/context/context.tsx +19 -0
  116. package/src/components/Table/context/tableProvider.tsx +39 -0
  117. package/src/components/Table/index.tsx +707 -0
  118. package/src/components/Table/styles.module.css +25 -0
  119. package/src/components/Tabs/index.tsx +87 -0
  120. package/src/components/TargetLanguageIcon/index.tsx +84 -0
  121. package/src/components/Text/index.tsx +59 -0
  122. package/src/components/ThemeSwitcher/index.tsx +118 -0
  123. package/src/components/Timeline/index.tsx +290 -0
  124. package/src/components/Tooltip/index.tsx +41 -0
  125. package/src/components/UserAvatar/index.tsx +87 -0
  126. package/src/components/UserAvatar/sizeMap.ts +12 -0
  127. package/src/components/Wizard/index.tsx +208 -0
  128. package/src/components/Wizard/types.ts +17 -0
  129. package/src/components/WorkspaceSelector/CreateOrg.tsx +95 -0
  130. package/src/components/WorkspaceSelector/CreateWorkspace.tsx +196 -0
  131. package/src/components/WorkspaceSelector/OrgList.tsx +115 -0
  132. package/src/components/WorkspaceSelector/OrgSelector.tsx +207 -0
  133. package/src/components/WorkspaceSelector/RecentWorkspaces.tsx +83 -0
  134. package/src/components/WorkspaceSelector/ScrollingList.tsx +84 -0
  135. package/src/components/WorkspaceSelector/SearchBox.tsx +40 -0
  136. package/src/components/WorkspaceSelector/WorkspaceItem.tsx +37 -0
  137. package/src/components/WorkspaceSelector/WorkspaceList.tsx +107 -0
  138. package/src/components/WorkspaceSelector/index.tsx +400 -0
  139. package/src/components/WorkspaceSelector/styles.css +74 -0
  140. package/src/components/__beta__/CLIWizard/index.tsx +357 -0
  141. package/src/components/__beta__/CLIWizard/terminal-command.tsx +108 -0
  142. package/src/components/__beta__/CLIWizard/terminal.tsx +83 -0
  143. package/src/components/__beta__/README.md +3 -0
  144. package/src/components/index.mdx +38 -0
  145. package/src/context/ConfigContext.tsx +43 -0
  146. package/src/context/ModalContext.tsx +118 -0
  147. package/src/context/theme.ts +1 -0
  148. package/src/hooks/useAppLayout.ts +10 -0
  149. package/src/hooks/useConfig.ts +10 -0
  150. package/src/hooks/useIsMounted.ts +13 -0
  151. package/src/hooks/useModal.tsx +10 -0
  152. package/src/hooks/useTailwindBreakpoint.ts +47 -0
  153. package/src/hooks/useTheme.ts +13 -0
  154. package/src/index.ts +234 -0
  155. package/src/lib/assert.ts +9 -0
  156. package/src/lib/codeUtils.ts +177 -0
  157. package/src/lib/debounce.ts +9 -0
  158. package/src/lib/responsiveMappers.ts +69 -0
  159. package/src/lib/responsiveUtils.ts +23 -0
  160. package/src/lib/storybookUtils.tsx +26 -0
  161. package/src/lib/typeUtils.ts +109 -0
  162. package/src/lib/utils.ts +85 -0
  163. package/src/styles/codeSyntax.css +59 -0
  164. package/src/styles/globals.css +51 -0
  165. package/src/types.ts +200 -0
  166. package/src/vite-env.d.ts +6 -0
  167. package/types/utilities.d.ts +1 -1
  168. package/dist/components/AIChat/AIChatContainer.d.ts +0 -26
  169. package/dist/components/AIChat/AIChatMessage.d.ts +0 -19
  170. package/dist/components/AIChat/AIChatMessageComposer.d.ts +0 -22
  171. package/dist/components/AIChat/AIChatMessageList.d.ts +0 -6
  172. package/dist/components/AIChat/AIChatModelSelector.d.ts +0 -14
  173. package/dist/components/AIChat/componentsTypes.d.ts +0 -11
  174. package/dist/components/AIChat/context.d.ts +0 -3
  175. package/dist/components/AIChat/index.d.ts +0 -12
  176. package/dist/components/AIChat/parts/AIChatMessageFilePart.d.ts +0 -7
  177. package/dist/components/AIChat/parts/AIChatMessageReasoningPart.d.ts +0 -5
  178. package/dist/components/AIChat/parts/AIChatMessageSourcePart.d.ts +0 -9
  179. package/dist/components/AIChat/parts/AIChatMessageTextPart.d.ts +0 -5
  180. package/dist/components/AIChat/parts/AIChatMessageToolInvocationPart.d.ts +0 -6
  181. package/dist/components/AIChat/parts/AIChatMessageToolPart.d.ts +0 -33
  182. package/dist/components/AIChat/parts/AIChatMessageToolResultPart.d.ts +0 -5
  183. package/dist/components/AIChat/toolCallApproval.d.ts +0 -15
  184. package/dist/components/AIChat/types.d.ts +0 -79
  185. package/dist/components/ActionBar/index.d.ts +0 -36
  186. package/dist/components/Alert/index.d.ts +0 -18
  187. package/dist/components/Alert/types.d.ts +0 -4
  188. package/dist/components/AppLayout/context.d.ts +0 -16
  189. package/dist/components/AppLayout/index.d.ts +0 -131
  190. package/dist/components/AppLayout/provider.d.ts +0 -8
  191. package/dist/components/AppLayout/useAppLayoutKeys.d.ts +0 -1
  192. package/dist/components/Badge/index.d.ts +0 -21
  193. package/dist/components/Button/index.d.ts +0 -22
  194. package/dist/components/Card/index.d.ts +0 -47
  195. package/dist/components/CodeEditorLayout/index.d.ts +0 -101
  196. package/dist/components/CodeHighlight/Pre.d.ts +0 -8
  197. package/dist/components/CodePlayground/index.d.ts +0 -102
  198. package/dist/components/CodeSnippet/index.d.ts +0 -49
  199. package/dist/components/Combobox/index.d.ts +0 -35
  200. package/dist/components/Command/index.d.ts +0 -80
  201. package/dist/components/Container/index.d.ts +0 -9
  202. package/dist/components/ContextDropdown/index.d.ts +0 -7
  203. package/dist/components/Dialog/index.d.ts +0 -21
  204. package/dist/components/DragNDrop/DragNDropArea.d.ts +0 -8
  205. package/dist/components/DragNDrop/DragOverlay.d.ts +0 -1
  206. package/dist/components/DragNDrop/Draggable.d.ts +0 -29
  207. package/dist/components/DragNDrop/Droppable.d.ts +0 -28
  208. package/dist/components/Dropdown/index.d.ts +0 -27
  209. package/dist/components/ExternalPill/index.d.ts +0 -12
  210. package/dist/components/Facepile/index.d.ts +0 -16
  211. package/dist/components/GradientCircle/index.d.ts +0 -10
  212. package/dist/components/Grid/index.d.ts +0 -80
  213. package/dist/components/Heading/index.d.ts +0 -12
  214. package/dist/components/HighlightedText/index.d.ts +0 -19
  215. package/dist/components/Icon/customIcons/createCustomLucideIcon.d.ts +0 -3
  216. package/dist/components/Icon/customIcons/gems.d.ts +0 -2
  217. package/dist/components/Icon/customIcons/go.d.ts +0 -2
  218. package/dist/components/Icon/customIcons/index.d.ts +0 -10
  219. package/dist/components/Icon/customIcons/maven.d.ts +0 -2
  220. package/dist/components/Icon/customIcons/npm.d.ts +0 -2
  221. package/dist/components/Icon/customIcons/nuget.d.ts +0 -2
  222. package/dist/components/Icon/customIcons/packagist.d.ts +0 -2
  223. package/dist/components/Icon/customIcons/pypi.d.ts +0 -2
  224. package/dist/components/Icon/index.d.ts +0 -10
  225. package/dist/components/Icon/isIconName.d.ts +0 -2
  226. package/dist/components/Icon/names.d.ts +0 -6
  227. package/dist/components/IconButton/index.d.ts +0 -14
  228. package/dist/components/Input/index.d.ts +0 -8
  229. package/dist/components/KeyHint/index.d.ts +0 -16
  230. package/dist/components/LanguageIndicator/index.d.ts +0 -7
  231. package/dist/components/Link/index.d.ts +0 -15
  232. package/dist/components/LoggedInUserMenu/index.d.ts +0 -17
  233. package/dist/components/Logo/Animated.d.ts +0 -7
  234. package/dist/components/Logo/index.d.ts +0 -7
  235. package/dist/components/Logo/svgs/index.d.ts +0 -6
  236. package/dist/components/Modal/index.d.ts +0 -8
  237. package/dist/components/PageHeader/index.d.ts +0 -45
  238. package/dist/components/Popover/index.d.ts +0 -8
  239. package/dist/components/PromptInput/index.d.ts +0 -55
  240. package/dist/components/PullRequestLink/index.d.ts +0 -10
  241. package/dist/components/ResizablePanel/index.d.ts +0 -26
  242. package/dist/components/Score/index.d.ts +0 -37
  243. package/dist/components/ScrollArea/index.d.ts +0 -5
  244. package/dist/components/SegmentedButton/index.d.ts +0 -23
  245. package/dist/components/Select/index.d.ts +0 -13
  246. package/dist/components/Separator/index.d.ts +0 -6
  247. package/dist/components/Skeleton/index.d.ts +0 -27
  248. package/dist/components/Stack/index.d.ts +0 -33
  249. package/dist/components/Subnav/index.d.ts +0 -12
  250. package/dist/components/Switch/index.d.ts +0 -4
  251. package/dist/components/Table/context/context.d.ts +0 -8
  252. package/dist/components/Table/context/tableProvider.d.ts +0 -6
  253. package/dist/components/Table/index.d.ts +0 -94
  254. package/dist/components/Tabs/index.d.ts +0 -21
  255. package/dist/components/TargetLanguageIcon/index.d.ts +0 -7
  256. package/dist/components/Text/index.d.ts +0 -19
  257. package/dist/components/ThemeSwitcher/index.d.ts +0 -6
  258. package/dist/components/Timeline/index.d.ts +0 -49
  259. package/dist/components/Tooltip/index.d.ts +0 -9
  260. package/dist/components/UserAvatar/index.d.ts +0 -9
  261. package/dist/components/UserAvatar/sizeMap.d.ts +0 -3
  262. package/dist/components/Wizard/index.d.ts +0 -19
  263. package/dist/components/Wizard/types.d.ts +0 -15
  264. package/dist/components/WorkspaceSelector/CreateOrg.d.ts +0 -6
  265. package/dist/components/WorkspaceSelector/CreateWorkspace.d.ts +0 -17
  266. package/dist/components/WorkspaceSelector/OrgList.d.ts +0 -12
  267. package/dist/components/WorkspaceSelector/OrgSelector.d.ts +0 -13
  268. package/dist/components/WorkspaceSelector/RecentWorkspaces.d.ts +0 -11
  269. package/dist/components/WorkspaceSelector/ScrollingList.d.ts +0 -21
  270. package/dist/components/WorkspaceSelector/SearchBox.d.ts +0 -9
  271. package/dist/components/WorkspaceSelector/WorkspaceItem.d.ts +0 -9
  272. package/dist/components/WorkspaceSelector/WorkspaceList.d.ts +0 -11
  273. package/dist/components/WorkspaceSelector/index.d.ts +0 -36
  274. package/dist/components/__beta__/CLIWizard/index.d.ts +0 -19
  275. package/dist/components/__beta__/CLIWizard/terminal-command.d.ts +0 -19
  276. package/dist/components/__beta__/CLIWizard/terminal.d.ts +0 -26
  277. package/dist/context/ConfigContext.d.ts +0 -18
  278. package/dist/context/ModalContext.d.ts +0 -22
  279. package/dist/context/theme.d.ts +0 -1
  280. package/dist/createCustomLucideIcon-CatlpFc0.mjs +0 -19
  281. package/dist/createCustomLucideIcon-CatlpFc0.mjs.map +0 -1
  282. package/dist/gems-DQ7pOLLr.mjs +0 -24
  283. package/dist/gems-DQ7pOLLr.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-DsW1bFpz.mjs.map +0 -1
  287. package/dist/hooks/useAppLayout.d.ts +0 -1
  288. package/dist/hooks/useConfig.d.ts +0 -2
  289. package/dist/hooks/useIsMounted.d.ts +0 -1
  290. package/dist/hooks/useModal.d.ts +0 -11
  291. package/dist/hooks/useTailwindBreakpoint.d.ts +0 -3
  292. package/dist/hooks/useTheme.d.ts +0 -6
  293. package/dist/index-C9bJtuJ5.mjs +0 -16347
  294. package/dist/index-C9bJtuJ5.mjs.map +0 -1
  295. package/dist/index.d.ts +0 -80
  296. package/dist/lib/assert.d.ts +0 -2
  297. package/dist/lib/codeUtils.d.ts +0 -36
  298. package/dist/lib/debounce.d.ts +0 -1
  299. package/dist/lib/responsiveMappers.d.ts +0 -10
  300. package/dist/lib/responsiveUtils.d.ts +0 -3
  301. package/dist/lib/storybookUtils.d.ts +0 -5
  302. package/dist/lib/typeUtils.d.ts +0 -24
  303. package/dist/lib/utils.d.ts +0 -24
  304. package/dist/maven-Dub5liK1.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 -125
  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-BYcG5_q9.mjs +0 -17
  312. package/dist/npm-BYcG5_q9.mjs.map +0 -1
  313. package/dist/nuget-CV5HU1JR.mjs +0 -11
  314. package/dist/nuget-CV5HU1JR.mjs.map +0 -1
  315. package/dist/nuget-D86y5HDl.mjs.map +0 -1
  316. package/dist/packagist-BFSSrw4p.mjs +0 -118
  317. package/dist/packagist-BFSSrw4p.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-2SUX-2OR.mjs.map +0 -1
  321. package/dist/pypi-DLh6kIJe.mjs +0 -11
  322. package/dist/pypi-DLh6kIJe.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 -85
package/README.md CHANGED
@@ -33,7 +33,7 @@ Add this to the top of your project's CSS file where you configure Tailwind:
33
33
 
34
34
  **Note:** The `@reference` directive is required for Tailwind v4 to recognize Moonshine's custom utilities and make them available in your project.
35
35
 
36
- ### 3. Import Moonshine's Compiled CSS
36
+ ### 3. Import Moonshine's CSS
37
37
 
38
38
  In your main app file (or root layout):
39
39
 
@@ -41,6 +41,8 @@ In your main app file (or root layout):
41
41
  import '@speakeasy-api/moonshine/moonshine.css'
42
42
  ```
43
43
 
44
+ **Note:** Moonshine distributes as pure TypeScript, and Vite will process the CSS from source automatically.
45
+
44
46
  ### 4. Set up the Provider
45
47
 
46
48
  Wrap your application in the `MoonshineConfigProvider` component:
@@ -52,7 +54,7 @@ import { MoonshineConfigProvider } from '@speakeasy-api/moonshine'
52
54
  </MoonshineConfigProvider>
53
55
  ```
54
56
 
55
- ### 5. Configure Custom Fonts (Optional)
57
+ ### 6. Configure Custom Fonts (Optional)
56
58
 
57
59
  Moonshine uses custom fonts (Diatype, Tobias). If you have licenses for these fonts, add them to your project:
58
60
 
@@ -79,7 +81,7 @@ Moonshine uses custom fonts (Diatype, Tobias). If you have licenses for these fo
79
81
 
80
82
  If you don't have these fonts, the design system will fall back to system fonts.
81
83
 
82
- ### 6. Use Components and Utilities
84
+ ### 7. Use Components and Utilities
83
85
 
84
86
  ```tsx
85
87
  import { Grid } from '@speakeasy-api/moonshine'
@@ -112,7 +114,7 @@ The types are automatically generated during the build process and include:
112
114
 
113
115
  💡 **Tip**: This prevents typos and helps you discover available utilities without leaving your editor!
114
116
 
115
- 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.
116
118
 
117
119
  ### Using Tailwind Merge
118
120
 
@@ -206,8 +208,7 @@ import type { MoonshineClasses } from '@speakeasy-api/moonshine/types/utilities'
206
208
 
207
209
  1. Clone the repository
208
210
  2. Run `pnpm install` to install the dependencies
209
- 3. Run `pnpm build` to build the package
210
- 4. Run `pnpm storybook` to start the storybook server
211
+ 3. Run `pnpm storybook` to start the storybook server
211
212
 
212
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.
213
214
 
@@ -264,18 +265,33 @@ Run `pnpm test` to run the tests.
264
265
 
265
266
  ### Linking the library locally
266
267
 
267
- 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!
268
269
 
269
- 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:
270
271
 
271
272
  ```bash
272
273
  pnpm link ../path/to/moonshine
273
274
  ```
274
275
 
275
- 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:
276
285
 
277
286
  ```yaml
278
287
  '@speakeasy-api/moonshine':
279
- specifier: ^0.43.1
288
+ specifier: ^2.0.0-alpha.1
280
289
  version: link:../../../../moonshine
281
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,21 +1,22 @@
1
1
  {
2
2
  "name": "@speakeasy-api/moonshine",
3
- "version": "1.33.4",
3
+ "version": "2.0.0-alpha.2",
4
4
  "packageManager": "pnpm@9.0.0",
5
5
  "description": "Speakeasy's design system Moonshine",
6
6
  "sideEffects": false,
7
- "main": "dist/moonshine.cjs.js",
8
- "module": "dist/moonshine.es.js",
9
- "types": "dist/index.d.ts",
7
+ "main": "src/index.ts",
8
+ "module": "src/index.ts",
9
+ "types": "src/index.ts",
10
10
  "exports": {
11
11
  ".": {
12
- "types": "./dist/index.d.ts",
13
- "require": "./dist/moonshine.cjs.js",
14
- "import": "./dist/moonshine.es.js"
12
+ "types": "./src/index.ts",
13
+ "import": "./src/index.ts",
14
+ "require": "./src/index.ts"
15
15
  },
16
16
  "./moonshine.css": {
17
- "require": "./dist/style.css",
18
- "import": "./dist/style.css"
17
+ "require": "./src/global.css",
18
+ "import": "./src/global.css",
19
+ "default": "./src/global.css"
19
20
  },
20
21
  "./src/global.css": {
21
22
  "require": "./src/global.css",
@@ -26,28 +27,16 @@
26
27
  "type": "git",
27
28
  "url": "https://github.com/speakeasy-api/moonshine.git"
28
29
  },
29
- "files": [
30
- "dist",
31
- "src/global.css",
32
- "src/base.css",
33
- "src/utilities.css",
34
- "types"
35
- ],
36
30
  "scripts": {
37
- "clean": "rimraf dist",
38
- "build": "pnpm clean && vite build",
39
- "build:watch": "vite build --watch --mode development",
40
31
  "type-check": "tsc --noEmit --skipLibCheck",
41
- "prepack": "pnpm build",
32
+ "prepack": "pnpm type-check",
42
33
  "storybook": "storybook dev -p 6006",
43
34
  "build-storybook": "storybook build",
44
35
  "chromatic": "chromatic",
45
36
  "lint": "eslint",
46
37
  "lint:fix": "eslint --fix",
47
38
  "test": "vitest",
48
- "analyze-bundle": "npx vite-bundle-visualizer",
49
- "generate:docs": "node scripts/generate-utility-docs.js",
50
- "postbuild": "pnpm generate:docs"
39
+ "generate:docs": "node scripts/generate-utility-docs.js"
51
40
  },
52
41
  "author": "Speakeasy",
53
42
  "license": "ISC",
@@ -0,0 +1,324 @@
1
+ #!/usr/bin/env node
2
+
3
+ const fs = require('fs')
4
+ const path = require('path')
5
+ const postcss = require('postcss')
6
+
7
+ // Paths
8
+ const UTILITIES_CSS = path.join(__dirname, '../src/utilities.css')
9
+ const BASE_CSS = path.join(__dirname, '../src/base.css')
10
+ const CLAUDE_MD = path.join(__dirname, '../CLAUDE.md')
11
+ const TYPES_DIR = path.join(__dirname, '../types')
12
+ const UTILITIES_TYPES = path.join(TYPES_DIR, 'utilities.d.ts')
13
+
14
+ // Ensure types directory exists
15
+ if (!fs.existsSync(TYPES_DIR)) {
16
+ fs.mkdirSync(TYPES_DIR)
17
+ }
18
+
19
+ // Parse CSS and extract utilities
20
+ async function extractUtilities(cssPath) {
21
+ if (!fs.existsSync(cssPath)) {
22
+ console.error(`CSS file not found: ${cssPath}`)
23
+ return []
24
+ }
25
+
26
+ const css = fs.readFileSync(cssPath, 'utf8')
27
+
28
+ let ast
29
+ try {
30
+ ast = postcss.parse(css)
31
+ } catch (error) {
32
+ console.error(`Error parsing CSS file ${cssPath}:`, error.message)
33
+ return []
34
+ }
35
+
36
+ const utilities = []
37
+
38
+ ast.walkAtRules('utility', (rule) => {
39
+ const name = rule.params.trim()
40
+
41
+ // Extract the CSS properties
42
+ const properties = []
43
+ rule.walkDecls((decl) => {
44
+ // Skip nested rules (like @variant)
45
+ if (decl.parent === rule) {
46
+ properties.push(` ${decl.prop}: ${decl.value};`)
47
+ }
48
+ })
49
+
50
+ // Check for variant rules (like dark mode)
51
+ const variants = []
52
+ rule.walkAtRules('variant', (variantRule) => {
53
+ const variantProps = []
54
+ variantRule.walkDecls((decl) => {
55
+ variantProps.push(` ${decl.prop}: ${decl.value};`)
56
+ })
57
+ variants.push({
58
+ name: variantRule.params.trim(),
59
+ properties: variantProps,
60
+ })
61
+ })
62
+
63
+ utilities.push({
64
+ name,
65
+ properties,
66
+ variants,
67
+ raw: rule.toString(),
68
+ })
69
+ })
70
+
71
+ return utilities
72
+ }
73
+
74
+ // Extract theme colors that are exposed as utilities
75
+ async function extractThemeColors(cssPath) {
76
+ const css = fs.readFileSync(cssPath, 'utf8')
77
+ const ast = postcss.parse(css)
78
+ const colors = new Set()
79
+
80
+ ast.walkAtRules('theme', (rule) => {
81
+ rule.walkDecls((decl) => {
82
+ if (decl.prop.startsWith('--color-') && !decl.prop.includes('*')) {
83
+ const colorName = decl.prop.replace('--color-', '')
84
+ // Only include semantic colors, not raw values
85
+ if (
86
+ !colorName.match(
87
+ /^(brand|neutral|destructive|warning|success|info)-\d+$/
88
+ )
89
+ ) {
90
+ colors.add(colorName)
91
+ }
92
+ }
93
+ })
94
+ })
95
+
96
+ return Array.from(colors)
97
+ }
98
+
99
+ // Generate TypeScript definitions
100
+ function generateTypeDefinitions(utilities, themeColors) {
101
+ const utilityTypes = utilities.map((u) => ` | '${u.name}'`).join('\n')
102
+
103
+ // Generate color utility types
104
+ const colorPrefixes = ['bg', 'text', 'border', 'ring', 'divide']
105
+ const colorUtilities = themeColors
106
+ .flatMap((color) =>
107
+ colorPrefixes.map((prefix) => ` | '${prefix}-${color}'`)
108
+ )
109
+ .join('\n')
110
+
111
+ return `/**
112
+ * Auto-generated TypeScript definitions for Moonshine utilities
113
+ * Generated on: ${new Date().toISOString()}
114
+ *
115
+ * DO NOT EDIT THIS FILE DIRECTLY
116
+ * Run 'pnpm generate:docs' to update
117
+ */
118
+
119
+ /**
120
+ * Custom utility classes defined in utilities.css
121
+ */
122
+ export type MoonshineUtilities =
123
+ ${utilityTypes};
124
+
125
+ /**
126
+ * Semantic color utilities available from theme
127
+ * These are auto-generated from theme colors with standard prefixes
128
+ */
129
+ export type MoonshineColorUtilities =
130
+ ${colorUtilities};
131
+
132
+ /**
133
+ * All available Moonshine utility classes
134
+ */
135
+ export type MoonshineClasses = MoonshineUtilities | MoonshineColorUtilities;
136
+
137
+ /**
138
+ * Helper type for className props
139
+ */
140
+ export type MoonshineClassName = MoonshineClasses | MoonshineClasses[] | undefined | null | false;
141
+ `
142
+ }
143
+
144
+ // Generate documentation section for CLAUDE.md
145
+ function generateDocSection(utilities) {
146
+ const sections = []
147
+
148
+ // Group utilities by type
149
+ const typography = utilities.filter(
150
+ (u) => u.name.startsWith('text-') || u.name.startsWith('typography-')
151
+ )
152
+ const backgrounds = utilities.filter((u) => u.name.startsWith('bg-'))
153
+ const borders = utilities.filter((u) => u.name.startsWith('border-'))
154
+ const other = utilities.filter(
155
+ (u) =>
156
+ !u.name.startsWith('text-') &&
157
+ !u.name.startsWith('typography-') &&
158
+ !u.name.startsWith('bg-') &&
159
+ !u.name.startsWith('border-')
160
+ )
161
+
162
+ sections.push('## Available Utility Classes\n')
163
+ sections.push(
164
+ 'This section is auto-generated from the CSS files. Last updated: ' +
165
+ new Date().toISOString() +
166
+ '\n'
167
+ )
168
+
169
+ // Typography
170
+ if (typography.length > 0) {
171
+ sections.push('### Typography Utilities\n')
172
+ typography.forEach((u) => {
173
+ sections.push(`#### \`${u.name}\`\n`)
174
+ sections.push('```css')
175
+ sections.push(`.${u.name} {`)
176
+ sections.push(u.properties.join('\n'))
177
+
178
+ if (u.variants.length > 0) {
179
+ u.variants.forEach((v) => {
180
+ sections.push(`\n /* ${v.name} variant */`)
181
+ sections.push(v.properties.join('\n'))
182
+ })
183
+ }
184
+
185
+ sections.push('}')
186
+ sections.push('```\n')
187
+ })
188
+ }
189
+
190
+ // Backgrounds
191
+ if (backgrounds.length > 0) {
192
+ sections.push('### Background Utilities\n')
193
+ backgrounds.forEach((u) => {
194
+ sections.push(`#### \`${u.name}\`\n`)
195
+ sections.push('```css')
196
+ sections.push(`.${u.name} {`)
197
+ sections.push(u.properties.join('\n'))
198
+
199
+ if (u.variants.length > 0) {
200
+ u.variants.forEach((v) => {
201
+ sections.push(`\n /* ${v.name} variant */`)
202
+ sections.push(v.properties.join('\n'))
203
+ })
204
+ }
205
+
206
+ sections.push('}')
207
+ sections.push('```\n')
208
+ })
209
+ }
210
+
211
+ // Borders
212
+ if (borders.length > 0) {
213
+ sections.push('### Border Utilities\n')
214
+ borders.forEach((u) => {
215
+ sections.push(`#### \`${u.name}\`\n`)
216
+ sections.push('```css')
217
+ sections.push(`.${u.name} {`)
218
+ sections.push(u.properties.join('\n'))
219
+ sections.push('}')
220
+ sections.push('```\n')
221
+ })
222
+ }
223
+
224
+ // Other
225
+ if (other.length > 0) {
226
+ sections.push('### Other Utilities\n')
227
+ other.forEach((u) => {
228
+ sections.push(`#### \`${u.name}\`\n`)
229
+ sections.push('```css')
230
+ sections.push(`.${u.name} {`)
231
+ sections.push(u.properties.join('\n'))
232
+ sections.push('}')
233
+ sections.push('```\n')
234
+ })
235
+ }
236
+
237
+ return sections.join('\n')
238
+ }
239
+
240
+ // Update CLAUDE.md with generated content
241
+ function updateClaudeMd(newContent) {
242
+ const claudeMd = fs.readFileSync(CLAUDE_MD, 'utf8')
243
+
244
+ // Find the section to replace
245
+ const startMarker = '## Available Utility Classes'
246
+ const endMarker = '## Migration Notes'
247
+
248
+ const startIndex = claudeMd.indexOf(startMarker)
249
+ let endIndex = claudeMd.indexOf(endMarker)
250
+
251
+ // If end marker not found, look for the next ## heading
252
+ if (endIndex === -1) {
253
+ const afterStart = claudeMd.substring(startIndex + startMarker.length)
254
+ const nextHeadingMatch = afterStart.match(/\n## /)
255
+ if (nextHeadingMatch) {
256
+ endIndex = startIndex + startMarker.length + nextHeadingMatch.index + 1
257
+ }
258
+ }
259
+
260
+ if (startIndex === -1) {
261
+ console.error(
262
+ 'Could not find "## Available Utility Classes" section in CLAUDE.md'
263
+ )
264
+ console.error(
265
+ 'Please ensure CLAUDE.md contains this section for auto-generation to work'
266
+ )
267
+ return
268
+ }
269
+
270
+ if (endIndex === -1 || endIndex <= startIndex) {
271
+ // No end marker found, append to end of file
272
+ const updated = claudeMd + '\n\n' + newContent
273
+ fs.writeFileSync(CLAUDE_MD, updated, 'utf8')
274
+ console.log(' Appended to end of CLAUDE.md (no end marker found)')
275
+ } else {
276
+ const before = claudeMd.substring(0, startIndex)
277
+ const after = claudeMd.substring(endIndex)
278
+ const updated = before + newContent + '\n' + after
279
+ fs.writeFileSync(CLAUDE_MD, updated, 'utf8')
280
+ }
281
+ }
282
+
283
+ // Main function
284
+ async function main() {
285
+ console.log('🎨 Generating Moonshine utility documentation...\n')
286
+
287
+ try {
288
+ // Extract utilities
289
+ console.log('📖 Reading utilities.css...')
290
+ const utilities = await extractUtilities(UTILITIES_CSS)
291
+ console.log(` Found ${utilities.length} utility classes`)
292
+
293
+ // Extract theme colors
294
+ console.log('🎨 Reading theme colors from utilities.css...')
295
+ const themeColors = await extractThemeColors(UTILITIES_CSS)
296
+ console.log(` Found ${themeColors.length} theme colors`)
297
+
298
+ // Generate TypeScript definitions
299
+ console.log('\n📝 Generating TypeScript definitions...')
300
+ const typeDefs = generateTypeDefinitions(utilities, themeColors)
301
+ fs.writeFileSync(UTILITIES_TYPES, typeDefs, 'utf8')
302
+ console.log(
303
+ ` Written to ${path.relative(process.cwd(), UTILITIES_TYPES)}`
304
+ )
305
+
306
+ // Generate documentation
307
+ console.log('\n📚 Generating documentation...')
308
+ const docSection = generateDocSection(utilities)
309
+ updateClaudeMd(docSection)
310
+ console.log(` Updated ${path.relative(process.cwd(), CLAUDE_MD)}`)
311
+
312
+ console.log('\n✅ Documentation generation complete!')
313
+ console.log('\n💡 Tip: Import the types in your components:')
314
+ console.log(
315
+ ' import type { MoonshineClasses } from "@speakeasy-api/moonshine/types/utilities"'
316
+ )
317
+ } catch (error) {
318
+ console.error('\n❌ Error generating documentation:', error)
319
+ process.exit(1)
320
+ }
321
+ }
322
+
323
+ // Run the script
324
+ main()
@@ -0,0 +1,3 @@
1
+ <svg viewBox="0 0 128 128" width="16" height="16">
2
+ <g fill="currentColor"><path fill-rule="evenodd" clip-rule="evenodd" d="M64 5.103c-33.347 0-60.388 27.035-60.388 60.388 0 26.682 17.303 49.317 41.297 57.303 3.017.56 4.125-1.31 4.125-2.905 0-1.44-.056-6.197-.082-11.243-16.8 3.653-20.345-7.125-20.345-7.125-2.747-6.98-6.705-8.836-6.705-8.836-5.48-3.748.413-3.67.413-3.67 6.063.425 9.257 6.223 9.257 6.223 5.386 9.23 14.127 6.562 17.573 5.02.542-3.903 2.107-6.568 3.834-8.076-13.413-1.525-27.514-6.704-27.514-29.843 0-6.593 2.36-11.98 6.223-16.21-.628-1.52-2.695-7.662.584-15.98 0 0 5.07-1.623 16.61 6.19C53.7 35 58.867 34.327 64 34.304c5.13.023 10.3.694 15.127 2.033 11.526-7.813 16.59-6.19 16.59-6.19 3.287 8.317 1.22 14.46.593 15.98 3.872 4.23 6.215 9.617 6.215 16.21 0 23.194-14.127 28.3-27.574 29.796 2.167 1.874 4.097 5.55 4.097 11.183 0 8.08-.07 14.583-.07 16.572 0 1.607 1.088 3.49 4.148 2.897 23.98-7.994 41.263-30.622 41.263-57.294C124.388 32.14 97.35 5.104 64 5.104z"></path><path d="M26.484 91.806c-.133.3-.605.39-1.035.185-.44-.196-.685-.605-.543-.906.13-.31.603-.395 1.04-.188.44.197.69.61.537.91zm2.446 2.729c-.287.267-.85.143-1.232-.28-.396-.42-.47-.983-.177-1.254.298-.266.844-.14 1.24.28.394.426.472.984.17 1.255zM31.312 98.012c-.37.258-.976.017-1.35-.52-.37-.538-.37-1.183.01-1.44.373-.258.97-.025 1.35.507.368.545.368 1.19-.01 1.452zm3.261 3.361c-.33.365-1.036.267-1.552-.23-.527-.487-.674-1.18-.343-1.544.336-.366 1.045-.264 1.564.23.527.486.686 1.18.333 1.543zm4.5 1.951c-.147.473-.825.688-1.51.486-.683-.207-1.13-.76-.99-1.238.14-.477.823-.7 1.512-.485.683.206 1.13.756.988 1.237zm4.943.361c.017.498-.563.91-1.28.92-.723.017-1.308-.387-1.315-.877 0-.503.568-.91 1.29-.924.717-.013 1.306.387 1.306.88zm4.598-.782c.086.485-.413.984-1.126 1.117-.7.13-1.35-.172-1.44-.653-.086-.498.422-.997 1.122-1.126.714-.123 1.354.17 1.444.663zm0 0"></path></g>
3
+ </svg>
@@ -0,0 +1,152 @@
1
+ <svg width="16" height="16" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"
2
+ xmlns:xlink="http://www.w3.org/1999/xlink">
3
+ <defs>
4
+ <linearGradient id="a" x1="-7274.8" y1="2082.507" x2="-7243.872" y2="2046.343"
5
+ gradientTransform="matrix(-0.023, -0.116, -0.116, 0.023, 79.68, -889.484)"
6
+ gradientUnits="userSpaceOnUse">
7
+ <stop offset="0" stop-color="#f69923" />
8
+ <stop offset="0.312" stop-color="#f79a23" />
9
+ <stop offset="0.838" stop-color="#e97826" />
10
+ </linearGradient>
11
+ <linearGradient id="b" x1="-7503.689" y1="2086.595" x2="-7283.036" y2="2086.595"
12
+ gradientTransform="matrix(-0.023, -0.116, -0.116, 0.023, 79.68, -889.484)"
13
+ gradientUnits="userSpaceOnUse">
14
+ <stop offset="0.323" stop-color="#9e2064" />
15
+ <stop offset="0.63" stop-color="#c92037" />
16
+ <stop offset="0.751" stop-color="#cd2335" />
17
+ <stop offset="1" stop-color="#e97826" />
18
+ </linearGradient>
19
+ <linearGradient id="c" x1="-7477.053" y1="2064.42" x2="-7345.566" y2="2064.42"
20
+ gradientTransform="matrix(-0.023, -0.116, -0.116, 0.023, 79.68, -889.484)"
21
+ gradientUnits="userSpaceOnUse">
22
+ <stop offset="0" stop-color="#282662" />
23
+ <stop offset="0.095" stop-color="#662e8d" />
24
+ <stop offset="0.788" stop-color="#9f2064" />
25
+ <stop offset="0.949" stop-color="#cd2032" />
26
+ </linearGradient>
27
+ <linearGradient id="d" x1="-7491.296" y1="2088.633" x2="-7270.643" y2="2088.633" xlink:href="#b" />
28
+ <linearGradient id="e" x1="-7475.203" y1="2085.61" x2="-7359.244" y2="2085.61" xlink:href="#c" />
29
+ <linearGradient id="f" x1="-7491.296" y1="2065.799" x2="-7270.643" y2="2065.799" xlink:href="#b" />
30
+ <linearGradient id="g" x1="-7504.984" y1="2066.905" x2="-7284.331" y2="2066.905" xlink:href="#b" />
31
+ <linearGradient id="h" x1="-7491.296" y1="2058.959" x2="-7270.643" y2="2058.959" xlink:href="#b" />
32
+ <linearGradient id="i" x1="-7491.296" y1="2059.762" x2="-7270.643" y2="2059.762" xlink:href="#b" />
33
+ <linearGradient id="j" x1="-8307.632" y1="2040.008" x2="-8276.704" y2="2003.844"
34
+ gradientTransform="matrix(0.074, -0.112, -0.112, -0.074, 864.083, -775.51)" xlink:href="#a" />
35
+ <linearGradient id="k" x1="-8536.521" y1="2044.096" x2="-8315.868" y2="2044.096"
36
+ gradientTransform="matrix(0.074, -0.112, -0.112, -0.074, 864.083, -775.51)" xlink:href="#b" />
37
+ <linearGradient id="l" x1="-8509.885" y1="2021.921" x2="-8378.397" y2="2021.921"
38
+ gradientTransform="matrix(0.074, -0.112, -0.112, -0.074, 864.083, -775.51)" xlink:href="#c" />
39
+ <linearGradient id="m" x1="-8524.128" y1="2046.134" x2="-8303.475" y2="2046.134"
40
+ gradientTransform="matrix(0.074, -0.112, -0.112, -0.074, 864.083, -775.51)" xlink:href="#b" />
41
+ <linearGradient id="n" x1="-8508.035" y1="2043.111" x2="-8392.076" y2="2043.111"
42
+ gradientTransform="matrix(0.074, -0.112, -0.112, -0.074, 864.083, -775.51)" xlink:href="#c" />
43
+ <linearGradient id="o" x1="-8524.128" y1="2023.3" x2="-8303.475" y2="2023.3"
44
+ gradientTransform="matrix(0.074, -0.112, -0.112, -0.074, 864.083, -775.51)" xlink:href="#b" />
45
+ <linearGradient id="p" x1="-8537.816" y1="2024.407" x2="-8317.163" y2="2024.407"
46
+ gradientTransform="matrix(0.074, -0.112, -0.112, -0.074, 864.083, -775.51)" xlink:href="#b" />
47
+ <linearGradient id="q" x1="-8524.128" y1="2016.46" x2="-8303.475" y2="2016.46"
48
+ gradientTransform="matrix(0.074, -0.112, -0.112, -0.074, 864.083, -775.51)" xlink:href="#b" />
49
+ <linearGradient id="r" x1="-8524.128" y1="2017.263" x2="-8303.475" y2="2017.263"
50
+ gradientTransform="matrix(0.074, -0.112, -0.112, -0.074, 864.083, -775.51)" xlink:href="#b" />
51
+ </defs>
52
+ <title>file_type_maven</title>
53
+ <path
54
+ d="M5.976,2.533a9.539,9.539,0,0,0-.4,2.655l1.427.691a17.928,17.928,0,0,1,.1-2.541c.005-.058.011-.092.011-.092,0,.031-.009.061-.011.092A15.939,15.939,0,0,0,7.1,5.845a27.79,27.79,0,0,0,2.114-2A3.041,3.041,0,0,0,7.621,2.144S6.357,1.634,5.976,2.533Z"
55
+ style="fill:url(#a)" />
56
+ <path d="M9.688,9.722A.018.018,0,0,0,9.7,9.709l-.08.071c0,.007-.009.013-.01.019Z"
57
+ style="fill:none" />
58
+ <path d="M10.562,12.19c-.038.046-.083.091-.128.136C10.478,12.282,10.523,12.236,10.562,12.19Z"
59
+ style="fill:none" />
60
+ <path
61
+ d="M9.741,19.776c0-.021-.014-.044-.018-.065-.122-.445-.24-.876-.355-1.3-.125-.474-.244-.939-.359-1.391-.118-.473-.231-.937-.336-1.384-.112-.472-.215-.925-.311-1.366-.077-.359-.152-.707-.221-1.047-.024-.115-.045-.225-.066-.336-.042-.222-.086-.436-.126-.647s-.073-.386-.109-.575c-.011-.064-.022-.128-.034-.186L7.8,11.444l-.069.062-.142-.07c0,.015.005.032.01.047.047.285.1.573.152.863.03.164.063.332.093.5.088.465.181.926.282,1.393s.2.94.308,1.4.214.914.324,1.368.222.9.338,1.346c.119.466.24.925.365,1.374.026.1.055.206.085.3.1.366.2.721.3,1.073l.229.115.076-.068a.069.069,0,0,0-.009-.029C9.993,20.668,9.865,20.215,9.741,19.776Z"
62
+ style="fill:none" />
63
+ <path
64
+ d="M10.924,13.495c-.067.073-.136.142-.206.211h0c.036-.033.073-.072.107-.108A1.212,1.212,0,0,0,10.924,13.495Z"
65
+ style="fill:#be202e" />
66
+ <path
67
+ d="M10.924,13.495c-.067.073-.136.142-.206.211h0c.036-.033.073-.072.107-.108A1.212,1.212,0,0,0,10.924,13.495Z"
68
+ style="fill:#be202e;opacity:0.3499999940395355;isolation:isolate" />
69
+ <path
70
+ d="M10.4,12.356h0c.012-.009.021-.021.032-.03.045-.045.09-.09.128-.136-.05.055-.107.108-.161.166Z"
71
+ style="fill:#be202e" />
72
+ <path
73
+ d="M10.4,12.356h0c.012-.009.021-.021.032-.03.045-.045.09-.09.128-.136-.05.055-.107.108-.161.166Z"
74
+ style="fill:#be202e;opacity:0.3499999940395355;isolation:isolate" />
75
+ <path
76
+ d="M7.38,10.092q-.1-.712-.18-1.4c-.055-.477-.1-.945-.131-1.408,0-.028-.005-.056,0-.081C7.032,6.751,7.01,6.31,7,5.878L5.575,5.191c0,.086-.01.175-.013.269-.014.341-.025.7-.028,1.085,0,.43,0,.878.008,1.347.01.432.028.882.051,1.34.023.392.049.788.081,1.192,0,.017,0,.028,0,.046l1.906.965C7.517,10.984,7.447,10.536,7.38,10.092Z"
77
+ style="fill:url(#b)" />
78
+ <path
79
+ d="M10.2,21.362c.1.356.212.723.328,1.095,0,0,0,.011,0,.015.016.054.029.105.049.157.076.251.149.474.307.984a1.927,1.927,0,0,1,1.094.262,1.563,1.563,0,0,0-1.041-.566,3.349,3.349,0,0,0,1.827-2.977c-.012-.106-.026-.216-.047-.326a1.347,1.347,0,0,1-.766,1.152l0,0,0,0a3.766,3.766,0,0,0,.61-2.373c-.015-.193-.04-.4-.075-.619a3.056,3.056,0,0,1-1.772,2.462l-.578.532C10.157,21.227,10.175,21.293,10.2,21.362Z"
80
+ style="fill:url(#c)" />
81
+ <path
82
+ d="M9.453,19.735c-.121-.452-.242-.911-.365-1.374-.116-.444-.227-.892-.338-1.346s-.218-.911-.324-1.368-.21-.934-.308-1.4-.19-.931-.282-1.393c-.033-.168-.063-.332-.093-.5-.053-.286-.1-.574-.152-.863,0-.015-.005-.032-.01-.047l-1.895-.967a.679.679,0,0,1,.007.091c.038.429.075.865.126,1.3s.106.89.172,1.341c.056.38.116.757.179,1.138.013.075.028.154.041.228.087.471.181.926.282,1.351.113.482.235.934.357,1.356.082.276.163.542.246.794.072.212.15.425.225.635.181.493.382.971.6,1.438l1.915.97c-.1-.352-.2-.71-.3-1.073C9.508,19.941,9.482,19.84,9.453,19.735Z"
83
+ style="fill:url(#d)" />
84
+ <path
85
+ d="M7.947,20.208a14.86,14.86,0,0,0,.881,1.627c.011.016.022.038.033.054a3.864,3.864,0,0,0-1.46-.113,5.37,5.37,0,0,1,2.353,1.371,2.468,2.468,0,0,1-1.112.558,2.46,2.46,0,0,0,1.22-.108,3,3,0,0,0-.742,1.447,3.084,3.084,0,0,1,1.205-1.276c.575,1.906,1.267,3.972,2.034,6.14a.577.577,0,0,0,.09-.541c-.141-.389-1.054-2.968-2.095-6.468-.03-.1-.056-.2-.089-.3-.009-.029-.016-.054-.025-.084q-.16-.55-.326-1.132c-.024-.09-.05-.174-.074-.265l0,0-1.915-.97A.357.357,0,0,0,7.947,20.208Z"
86
+ style="fill:url(#e)" />
87
+ <path
88
+ d="M7.806,11.476c.011.064.023.121.034.186.037.19.07.382.109.575.04.211.084.426.126.647.021.111.042.222.066.336.069.34.144.688.221,1.047.1.441.2.894.311,1.366.1.446.218.911.336,1.384.115.451.231.913.359,1.391.112.423.233.858.355,1.3,0,.021.014.044.018.065.123.439.252.892.386,1.353a.069.069,0,0,0,.009.029l.578-.532c-.015,0-.026.013-.045.021a5.547,5.547,0,0,0,1.408-3.114,7.47,7.47,0,0,0-.018-1.737,11.925,11.925,0,0,0-.278-1.486c-.114-.458-.254-.944-.425-1.456a2.891,2.891,0,0,1-.441.637l-.1.11c-.033.037-.07.069-.107.108h0a3.377,3.377,0,0,0,.416-2.507,3.176,3.176,0,0,1-.572.991c-.038.046-.083.091-.128.136-.012.009-.021.021-.036.033h0a3.52,3.52,0,0,0,.371-.814,1.509,1.509,0,0,0,.043-.17c.02-.087.034-.175.047-.263.005-.058.014-.112.019-.171a2.461,2.461,0,0,0,0-.413c0-.046,0-.087-.011-.13-.011-.064-.019-.124-.031-.182-.046-.267-.1-.5-.149-.7-.026-.1-.05-.192-.076-.275-.012-.033-.018-.065-.03-.1-.031-.091-.056-.175-.084-.245a2.452,2.452,0,0,0-.105-.242h0a.532.532,0,0,1-.042.115,3.749,3.749,0,0,1-.65.934l.533-.487L9.687,9.7a.018.018,0,0,0-.009.013A1.082,1.082,0,0,0,9.6,9.8c0-.007.009-.013.01-.019L7.79,11.446C7.805,11.459,7.807,11.469,7.806,11.476Z"
89
+ style="fill:url(#f)" />
90
+ <path
91
+ d="M7.1,5.845c.022.4.057.848.1,1.344a.485.485,0,0,0,.009.078c.041.433.094.9.162,1.409.058.439.122.9.2,1.4.065.433.145.886.227,1.367l1.82-1.667a2.987,2.987,0,0,0,.457-1.647c0-.143-.011-.293-.022-.447A14.324,14.324,0,0,0,9.895,6.25a12.46,12.46,0,0,0-.271-1.287,6.825,6.825,0,0,0-.209-.653c-.065-.163-.133-.312-.2-.454A28.8,28.8,0,0,1,7.1,5.845Z"
92
+ style="fill:url(#g)" />
93
+ <path d="M10.827,13.6c-.033.037-.07.069-.107.108h0A1.391,1.391,0,0,1,10.827,13.6Z"
94
+ style="fill:#be202e" />
95
+ <path d="M10.827,13.6c-.033.037-.07.069-.107.108h0A1.391,1.391,0,0,1,10.827,13.6Z"
96
+ style="fill:#be202e;opacity:0.3499999940395355;isolation:isolate" />
97
+ <path d="M10.827,13.6c-.033.037-.07.069-.107.108h0A1.391,1.391,0,0,1,10.827,13.6Z"
98
+ style="fill:url(#h)" />
99
+ <path d="M10.4,12.359c.012-.009.021-.021.036-.033-.012.009-.021.021-.036.033Z"
100
+ style="fill:#be202e" />
101
+ <path d="M10.4,12.359c.012-.009.021-.021.036-.033-.012.009-.021.021-.036.033Z"
102
+ style="fill:#be202e;opacity:0.3499999940395355;isolation:isolate" />
103
+ <path d="M10.4,12.359c.012-.009.021-.021.036-.033-.012.009-.021.021-.036.033Z"
104
+ style="fill:url(#i)" />
105
+ <path
106
+ d="M24.627,2.891A10.789,10.789,0,0,0,22.2,4.713l.6,1.69a20.278,20.278,0,0,1,2.1-1.965c.051-.042.082-.066.082-.066-.026.024-.056.042-.082.066a18.028,18.028,0,0,0-2,2.013,31.432,31.432,0,0,0,3.288.072,3.44,3.44,0,0,0,.071-2.639S25.647,2.47,24.627,2.891Z"
107
+ style="fill:url(#j)" />
108
+ <path d="M21.9,11.627a.02.02,0,0,0,.017,0l-.121-.007c-.006,0-.017,0-.023.008Z" style="fill:none" />
109
+ <path d="M20.645,14.308c-.068.007-.14.007-.212.008C20.506,14.315,20.578,14.315,20.645,14.308Z"
110
+ style="fill:none" />
111
+ <path
112
+ d="M13.958,19.763c.014-.02.023-.046.037-.067.255-.456.5-.9.75-1.331.276-.481.55-.95.816-1.4.28-.474.559-.938.829-1.381.285-.468.561-.915.835-1.346.223-.35.439-.689.654-1.018.072-.111.143-.217.214-.323.142-.212.278-.419.413-.621.127-.186.248-.368.369-.55.042-.06.084-.121.12-.176l.021-.03-.1,0-.058-.169c-.008.015-.021.03-.029.046-.189.266-.378.538-.563.815-.106.156-.213.318-.325.479-.3.444-.591.889-.879,1.346s-.584.918-.867,1.375-.554.905-.826,1.359-.537.9-.8,1.352c-.274.47-.542.935-.8,1.4-.059.1-.119.21-.173.313-.21.374-.413.738-.611,1.1l.093.274.116.006a.078.078,0,0,0,.016-.031C13.452,20.681,13.709,20.214,13.958,19.763Z"
113
+ style="fill:none" />
114
+ <path
115
+ d="M19.9,15.646c-.112.006-.223.006-.334.006h0c.055,0,.116,0,.172,0A1.371,1.371,0,0,0,19.9,15.646Z"
116
+ style="fill:#be202e" />
117
+ <path
118
+ d="M19.9,15.646c-.112.006-.223.006-.334.006h0c.055,0,.116,0,.172,0A1.371,1.371,0,0,0,19.9,15.646Z"
119
+ style="fill:#be202e;opacity:0.3499999940395355;isolation:isolate" />
120
+ <path d="M20.384,14.314h0c.016,0,.033,0,.05,0,.072,0,.144,0,.212-.008-.084,0-.172,0-.261.006Z"
121
+ style="fill:#be202e" />
122
+ <path d="M20.384,14.314h0c.016,0,.033,0,.05,0,.072,0,.144,0,.212-.008-.084,0-.172,0-.261.006Z"
123
+ style="fill:#be202e;opacity:0.3499999940395355;isolation:isolate" />
124
+ <path
125
+ d="M19.751,10.091q.486-.652.968-1.272c.334-.428.672-.838,1.013-1.237.02-.025.041-.049.06-.069.334-.389.666-.761,1-1.117l-.6-1.685c-.071.067-.147.134-.224.205-.283.263-.579.547-.884.851-.344.343-.7.707-1.064,1.091-.335.356-.678.732-1.023,1.119-.293.334-.587.673-.882,1.024l-.034.039.767,2.291C19.153,10.918,19.452,10.5,19.751,10.091Z"
126
+ style="fill:url(#k)" />
127
+ <path
128
+ d="M13.063,21.4c-.2.37-.4.75-.605,1.142,0,.005-.007.01-.008.015-.03.057-.06.108-.085.165-.138.262-.256.5-.534,1.036a2.18,2.18,0,0,1,.673,1.08,1.768,1.768,0,0,0-.388-1.282c1.558.3,2.973.1,3.836-.945.075-.094.15-.194.221-.3a1.524,1.524,0,0,1-1.532.318h0A4.26,4.26,0,0,0,17.017,21.2c.141-.168.284-.352.431-.558a3.456,3.456,0,0,1-3.383.574l-.888-.031C13.139,21.261,13.1,21.328,13.063,21.4Z"
129
+ style="fill:url(#l)" />
130
+ <path
131
+ d="M13.758,19.5c.262-.461.529-.926.8-1.4.26-.45.525-.9.8-1.352s.549-.906.826-1.359.573-.919.867-1.375.587-.9.879-1.346c.107-.162.213-.318.325-.479.184-.272.374-.544.563-.815.008-.015.021-.03.029-.046l-.757-2.284a.768.768,0,0,1-.067.079c-.31.376-.626.756-.934,1.149s-.622.8-.927,1.217c-.257.35-.508.7-.76,1.058-.049.07-.1.146-.148.217-.3.449-.591.889-.847,1.312-.292.478-.554.939-.789,1.375-.153.288-.3.566-.433.835-.111.228-.217.461-.323.69-.246.54-.464,1.085-.661,1.633l.771,2.3c.2-.365.406-.728.611-1.1C13.638,19.71,13.7,19.608,13.758,19.5Z"
132
+ style="fill:url(#m)" />
133
+ <path
134
+ d="M12.17,18.686a16.808,16.808,0,0,0-.583,2.01c0,.022-.013.048-.016.07a4.37,4.37,0,0,0-1.086-1.251,6.074,6.074,0,0,1,.805,2.973,2.792,2.792,0,0,1-1.339-.435,2.782,2.782,0,0,0,1.068.883,3.4,3.4,0,0,0-1.747.575,3.488,3.488,0,0,1,1.984-.069C10.2,25.432,9.12,27.645,8.015,30a.652.652,0,0,0,.5-.364c.2-.426,1.51-3.226,3.453-6.872.054-.1.113-.205.168-.314.016-.031.03-.057.046-.087q.308-.57.637-1.17c.052-.092.1-.18.151-.272v-.005l-.771-2.3A.4.4,0,0,0,12.17,18.686Z"
135
+ style="fill:url(#n)" />
136
+ <path
137
+ d="M18.994,11.544c-.042.06-.078.116-.12.176-.121.182-.247.363-.369.55s-.271.409-.413.621c-.071.106-.142.212-.214.323-.215.329-.431.669-.654,1.018-.274.431-.55.878-.835,1.346-.27.443-.549.906-.829,1.381-.266.454-.539.919-.816,1.4-.246.43-.494.875-.75,1.331-.014.02-.023.046-.037.067-.249.451-.506.918-.765,1.4a.078.078,0,0,0-.016.031l.888.031c-.015-.008-.032-.01-.053-.019a6.274,6.274,0,0,0,3.607-1.389A8.449,8.449,0,0,0,18.986,18.4a13.487,13.487,0,0,0,.956-1.417c.272-.459.546-.962.815-1.51a3.269,3.269,0,0,1-.861.162l-.168.009c-.056,0-.111,0-.172,0h0a3.82,3.82,0,0,0,2.326-1.688,3.592,3.592,0,0,1-1.248.344c-.068.007-.14.007-.212.008-.016,0-.033,0-.055,0h0a3.981,3.981,0,0,0,.945-.36,1.707,1.707,0,0,0,.17-.1c.086-.054.166-.114.247-.174.051-.042.1-.08.151-.122a2.784,2.784,0,0,0,.326-.335c.034-.039.066-.073.094-.114.042-.06.083-.115.119-.171.175-.251.32-.48.439-.684.059-.1.112-.194.158-.282.016-.036.037-.067.054-.1.048-.1.094-.186.127-.264a2.773,2.773,0,0,0,.107-.278h0a.6.6,0,0,1-.125.059,4.24,4.24,0,0,1-1.265.236l.816.031-.816-.031a.02.02,0,0,0-.017,0,1.224,1.224,0,0,0-.128,0c.006,0,.017,0,.023-.008l-2.79-.1C19.007,11.529,19,11.539,18.994,11.544Z"
138
+ style="fill:url(#o)" />
139
+ <path
140
+ d="M22.9,6.452c-.3.339-.628.728-.986,1.164a.548.548,0,0,0-.055.07c-.311.381-.638.8-.989,1.263-.3.4-.62.824-.954,1.29-.292.4-.587.829-.9,1.281l2.79.1a3.379,3.379,0,0,0,1.677-.962c.111-.117.224-.244.338-.377A16.2,16.2,0,0,0,24.828,9a14.093,14.093,0,0,0,.8-1.251,7.72,7.72,0,0,0,.351-.691c.077-.183.141-.356.2-.525A32.58,32.58,0,0,1,22.9,6.452Z"
141
+ style="fill:url(#p)" />
142
+ <path d="M19.738,15.655c-.056,0-.111,0-.172,0h0A1.573,1.573,0,0,1,19.738,15.655Z"
143
+ style="fill:#be202e" />
144
+ <path d="M19.738,15.655c-.056,0-.111,0-.172,0h0A1.573,1.573,0,0,1,19.738,15.655Z"
145
+ style="fill:#be202e;opacity:0.3499999940395355;isolation:isolate" />
146
+ <path d="M19.738,15.655c-.056,0-.111,0-.172,0h0A1.573,1.573,0,0,1,19.738,15.655Z"
147
+ style="fill:url(#q)" />
148
+ <path d="M20.378,14.313c.016,0,.033,0,.055,0-.016,0-.033,0-.055,0Z" style="fill:#be202e" />
149
+ <path d="M20.378,14.313c.016,0,.033,0,.055,0-.016,0-.033,0-.055,0Z"
150
+ style="fill:#be202e;opacity:0.3499999940395355;isolation:isolate" />
151
+ <path d="M20.378,14.313c.016,0,.033,0,.055,0-.016,0-.033,0-.055,0Z" style="fill:url(#r)" />
152
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg viewBox="0 0 128 110" width="16" height="16">
2
+ <path fill="currentColor"
3
+ d="M2 38.5h124v43.71H64v7.29H36.44v-7.29H2zm6.89 36.43h13.78V53.07h6.89v21.86h6.89V45.79H8.89zm34.44-29.14v36.42h13.78v-7.28h13.78V45.79zm13.78 7.29H64v14.56h-6.89zm20.67-7.29v29.14h13.78V53.07h6.89v21.86h6.89V53.07h6.89v21.86h6.89V45.79z"></path>
4
+ </svg>
@@ -0,0 +1,5 @@
1
+ <svg viewBox="0 0 128 128" width="16" height="16">
2
+ <path
3
+ d="M9.313 2.508c-3.356.43-6.32 2.418-7.958 5.344C.457 9.457.043 11.07.04 12.969c0 1.789.297 3.117 1.063 4.687 1.421 2.938 4.117 5.008 7.468 5.73.86.184 2.95.2 3.848.032 3.844-.723 6.926-3.375 8.168-7.02.422-1.222.508-1.824.508-3.398 0-1.531-.043-1.883-.418-3.094-1.063-3.492-3.887-6.21-7.406-7.125-1.176-.304-2.825-.418-3.957-.273zM56.5 25.531C42.586 26.72 30.95 36.625 27.602 50.125c-.422 1.688-.579 2.617-.864 5.031-.101.864-.152 38.29-.05 39.969.148 2.613.523 4.844 1.218 7.25 3.106 10.77 11.625 19.27 22.367 22.313 1.829.511 3.766.882 5.82 1.105 1.009.105 2.071.113 20.72.113 20.835 0 20.07.012 22.25-.289a32.469 32.469 0 0014.96-6.148c1.747-1.305 3.922-3.332 5.239-4.875 1.261-1.489 2.699-3.524 3.644-5.188 1.914-3.355 3.324-7.457 3.867-11.25.332-2.273.309-.824.332-21.781.02-13.656.008-19.71-.043-20.438-.468-7.023-3.007-13.374-7.55-18.874-.762-.926-3.082-3.243-4.012-4.012-4.656-3.856-9.867-6.25-15.688-7.2-2.48-.406-.769-.374-22.562-.39-15.938-.004-19.969.008-20.75.07zm-2.875 14.895c4.8.855 8.73 4.21 10.281 8.773.977 2.883.95 5.926-.07 8.77-.68 1.894-2 3.894-3.43 5.187-2.554 2.332-5.601 3.532-8.968 3.532-3.633 0-6.833-1.32-9.383-3.868-2.149-2.152-3.438-4.78-3.805-7.789-.102-.812-.086-2.5.031-3.343.824-6.008 5.57-10.633 11.657-11.376.792-.093 2.867-.03 3.687.114zM96.188 73.03c4.695.602 8.8 2.582 12.18 5.875 2.53 2.469 4.257 5.227 5.35 8.563.708 2.133.97 3.738 1.012 6.125.043 2.43-.16 4.125-.77 6.27-1.315 4.679-4.397 8.937-8.46 11.69-5.25 3.563-11.648 4.571-17.836 2.813-2.344-.66-5.14-2.097-7.102-3.64-5.164-4.079-8.132-10.172-8.124-16.715.007-7.282 3.773-14.051 10-17.942 2.8-1.757 5.968-2.808 9.437-3.132.855-.083 3.395-.024 4.313.093zm0 0"
4
+ fill="currentColor"></path>
5
+ </svg>