@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
@@ -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>
@@ -0,0 +1 @@
1
+ <svg height="16" viewBox="3.01810963 0 758.25189037 627.7911721" width="16" xmlns="http://www.w3.org/2000/svg"><g stroke-linecap="round" stroke-linejoin="round" stroke-width="6.04"><path d="m76.62 357.52v68.42a4.58 4.58 0 0 1 -6.73 4l-64.44-34.16a4.58 4.58 0 0 1 0-8.09l64.44-34.21a4.58 4.58 0 0 1 6.73 4z" fill="#e1743f" stroke="#e1743f"/><path d="m488 596.62v-241.27l-5.32-1.28-43.68 20.23v230h41.3a7.67 7.67 0 0 0 7.7-7.64z" fill="#c25934" stroke="#c25934"/><path d="m761 332c.27.8-32.74-60.77-32.74-60.77l-45.26 51.66z" fill="#e1743f" stroke="#e1743f"/><path d="m251.59 104.92h-38a11.72 11.72 0 0 0 -6.43 1.92l-131.29 86.16a11.72 11.72 0 0 0 -5.29 9.79v412.14a11.72 11.72 0 0 0 11.72 11.72h78.2a11.72 11.72 0 0 0 8.28-3.43l81.22-81.22-162.84-245.54a11.72 11.72 0 0 1 3.3-16.24q.37-.24.75-.46l101.15-56.5a11.72 11.72 0 0 0 6-10.23v-45.03a11.72 11.72 0 0 1 3-7.88z" fill="#c25934" stroke="#c25934"/><path d="m431.85 626.65h-113.53a7.67 7.67 0 0 1 -6.32-3.33l-227.06-330.46a7.67 7.67 0 0 1 2-10.66q.27-.18.55-.34l110.84-61.91v145.65a7.67 7.67 0 0 0 7.64 7.67l233 1v245.24a7.14 7.14 0 0 1 -7.14 7.14z" fill="#e1743f" stroke="#e1743f"/></g><path d="m336.35 79.33a3 3 0 0 1 -3-3v-70.33a3 3 0 0 1 4.45-2.66l131 70.27a3 3 0 0 1 -1.43 5.68z" fill="#c25934"/><path d="m336.35 6 131 70.27h-131zm0-6a6 6 0 0 0 -6 6v70.31a6 6 0 0 0 6 6h131a6 6 0 0 0 2.82-11.31l-130.97-70.28a6 6 0 0 0 -2.85-.72z" fill="#c25934"/><g stroke-linecap="round" stroke-linejoin="round" stroke-width="6.04"><path d="m728.34 271.11-97.16-12.07-49.58 47.17 2.2 12.72 43.38 67.81z" fill="#c25934" stroke="#c25934"/><path d="m626.39 387.08-42.59-68.15-30-173.58a14.08 14.08 0 0 0 -5.13-8.64l-77.73-61.61h-149.53a12.9 12.9 0 0 0 -5.24 1.11l-64.58 28.7 187.41 269.39 43.66-20.23z" fill="#e1743f" stroke="#e1743f"/><path d="m198.36 365.6v-197.1a13 13 0 0 1 3.38-8.74l49.86-54.85 187.4 269.39-233-1a7.67 7.67 0 0 1 -7.64-7.7z" fill="#e68c59" stroke="#e68c59"/></g></svg>