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