diff --git a/.github/workflows/published-test.yml b/.github/workflows/published-test.yml
deleted file mode 100644
index 023f57a2..00000000
--- a/.github/workflows/published-test.yml
+++ /dev/null
@@ -1,30 +0,0 @@
-name: Published Package Test
-
-on:
- pull_request:
- branches:
- - main
-
-
-jobs:
- test:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v4
-
- - uses: pnpm/action-setup@v4
- with:
- version: 9.0.0
-
- - run: pnpm install
- - run: pnpm pack
-
- - run: pnpm link ../ # This links the root package into the integration project
- working-directory: integration
-
- - run: pnpm install --no-frozen-lockfile
- working-directory: integration
-
-
- - run: pnpm test
- working-directory: integration
diff --git a/.npmignore b/.npmignore
new file mode 100644
index 00000000..c73b5d24
--- /dev/null
+++ b/.npmignore
@@ -0,0 +1,63 @@
+# Exclude story files
+**/*.stories.tsx
+**/*.stories.ts
+**/*.stories.mdx
+
+# Exclude test files
+**/*.test.tsx
+**/*.test.ts
+
+# Exclude test directories
+**/__tests__/
+**/test/
+
+# Exclude dist artifacts
+dist/
+src/dist/
+
+# Exclude development files
+.storybook/
+storybook-static/
+integration/
+tests/
+*.log
+build-storybook.log
+.eslintcache
+tsconfig.tsbuildinfo
+*.tsbuildinfo
+
+# Exclude source maps (not needed for pure TS)
+**/*.map
+
+# Exclude node_modules
+node_modules/
+
+# Exclude git files
+.git/
+.gitignore
+.gitattributes
+
+# Exclude CI/CD
+.github/
+
+# Exclude config files (not needed by consumers)
+vite.config.mts
+postcss.config.mjs
+eslint.config.mjs
+components.json
+tsconfig.json
+pnpm-lock.yaml
+.prettierrc*
+.prettierignore
+.editorconfig
+.releaserc.json
+.vscode/
+
+# Exclude old package tarballs
+*.tgz
+
+# Exclude docs (README and LICENSE are auto-included)
+CLAUDE.md
+*.md
+!README.md
+
diff --git a/.releaserc.json b/.releaserc.json
index fcd57804..30e6a04e 100644
--- a/.releaserc.json
+++ b/.releaserc.json
@@ -1,8 +1,19 @@
{
- "branches": ["main", { "name": "alpha", "prerelease": true }],
+ "branches": [
+ "main",
+ {
+ "name": "alpha",
+ "prerelease": "alpha"
+ }
+ ],
"plugins": [
"@semantic-release/commit-analyzer",
"@semantic-release/release-notes-generator",
- "@semantic-release/npm"
+ [
+ "@semantic-release/npm",
+ {
+ "npmPublish": true
+ }
+ ]
]
}
diff --git a/.storybook/main.ts b/.storybook/main.ts
index be427385..377152b2 100644
--- a/.storybook/main.ts
+++ b/.storybook/main.ts
@@ -1,4 +1,5 @@
import type { StorybookConfig } from '@storybook/react-vite'
+import path from 'path'
const config: StorybookConfig = {
stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'],
@@ -18,8 +19,17 @@ const config: StorybookConfig = {
},
async viteFinal(config) {
const { mergeConfig } = await import('vite')
+ const { resolve } = await import('path')
+ const { fileURLToPath } = await import('url')
+ const __filename = fileURLToPath(import.meta.url)
+ const __dirname = path.dirname(__filename)
return mergeConfig(config, {
+ resolve: {
+ alias: {
+ '@': resolve(__dirname, '../src'),
+ },
+ },
optimizeDeps: {
// https://github.com/storybookjs/storybook/issues/28542#issuecomment-2268031095
exclude: [
diff --git a/README.md b/README.md
index ae0442ce..3216e441 100644
--- a/README.md
+++ b/README.md
@@ -33,7 +33,7 @@ Add this to the top of your project's CSS file where you configure Tailwind:
**Note:** The `@reference` directive is required for Tailwind v4 to recognize Moonshine's custom utilities and make them available in your project.
-### 3. Import Moonshine's Compiled CSS
+### 3. Import Moonshine's CSS
In your main app file (or root layout):
@@ -41,6 +41,8 @@ In your main app file (or root layout):
import '@speakeasy-api/moonshine/moonshine.css'
```
+**Note:** Moonshine distributes as pure TypeScript, and Vite will process the CSS from source automatically.
+
### 4. Set up the Provider
Wrap your application in the `MoonshineConfigProvider` component:
@@ -52,7 +54,7 @@ import { MoonshineConfigProvider } from '@speakeasy-api/moonshine'
```
-### 5. Configure Custom Fonts (Optional)
+### 6. Configure Custom Fonts (Optional)
Moonshine uses custom fonts (Diatype, Tobias). If you have licenses for these fonts, add them to your project:
@@ -79,7 +81,7 @@ Moonshine uses custom fonts (Diatype, Tobias). If you have licenses for these fo
If you don't have these fonts, the design system will fall back to system fonts.
-### 6. Use Components and Utilities
+### 7. Use Components and Utilities
```tsx
import { Grid } from '@speakeasy-api/moonshine'
@@ -112,7 +114,7 @@ The types are automatically generated during the build process and include:
💡 **Tip**: This prevents typos and helps you discover available utilities without leaving your editor!
-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.
+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.
### Using Tailwind Merge
@@ -206,8 +208,7 @@ import type { MoonshineClasses } from '@speakeasy-api/moonshine/types/utilities'
1. Clone the repository
2. Run `pnpm install` to install the dependencies
-3. Run `pnpm build` to build the package
-4. Run `pnpm storybook` to start the storybook server
+3. Run `pnpm storybook` to start the storybook server
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.
@@ -264,18 +265,33 @@ Run `pnpm test` to run the tests.
### Linking the library locally
-Run `pnpm build:watch` within Moonshine to build the library and watch for changes.
+Since Moonshine distributes as pure TypeScript, linking is much simpler - no build step required!
-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:
+1. **Link the library** from within your consuming app:
```bash
pnpm link ../path/to/moonshine
```
-The lockfile file within your app should referenced the linked copy:
+For example, if `moonshine` is a sibling of your app directory:
+
+```bash
+pnpm link ../moonshine
+```
+
+2. **Start your dev server** - Vite will automatically transpile the TypeScript from the linked library.
+
+The lockfile within your app should reference the linked copy:
```yaml
'@speakeasy-api/moonshine':
- specifier: ^0.43.1
+ specifier: ^2.0.0-alpha.1
version: link:../../../../moonshine
```
+
+**Benefits of pure TypeScript distribution:**
+
+- ✅ No need to run `tsc` in watch mode
+- ✅ No build conflicts between library and consumer
+- ✅ Instant updates when you change source files
+- ✅ Simpler development workflow
diff --git a/components.json b/components.json
index 6d4ed3d3..c3b597b2 100644
--- a/components.json
+++ b/components.json
@@ -9,12 +9,5 @@
"baseColor": "neutral",
"cssVariables": true,
"prefix": ""
- },
- "aliases": {
- "components": "@/components",
- "utils": "@/lib/utils",
- "ui": "@/components/ui",
- "lib": "@/lib",
- "hooks": "@/hooks"
}
-}
\ No newline at end of file
+}
diff --git a/integration/integration.test.tsx b/integration/integration.test.tsx
deleted file mode 100644
index 85f8f97d..00000000
--- a/integration/integration.test.tsx
+++ /dev/null
@@ -1,118 +0,0 @@
-import { render, screen } from '@testing-library/react'
-import {
- Card,
- Grid,
- Separator,
- Button,
- Icon,
- Stack,
- Badge,
- Heading,
- Text,
- Logo,
- Score,
- Container,
- Combobox,
-} from '@speakeasy-api/moonshine'
-import { describe, it, expect } from 'vitest'
-
-// This is a sense check that the components in the **PUBLISHED** package are working
-
-describe('Card', () => {
- it('renders', () => {
- render(
-
- Header
- Content
-
-
- )
-
- expect(screen.getByText('Header')).toBeInTheDocument()
- expect(screen.getByText('Content')).toBeInTheDocument()
- expect(screen.getByText('Footer')).toBeInTheDocument()
- })
-})
-
-describe('Grid', () => {
- it('renders', () => {
- render(
-
- 1
- 2
- 3
-
- )
- })
-})
-
-describe('Separator', () => {
- it('renders', () => {
- render( )
- })
-})
-
-describe('Button', () => {
- it('renders', () => {
- render(Click me )
- })
-})
-
-describe('Icon', () => {
- it('renders', () => {
- render( )
- })
-})
-
-describe('Stack', () => {
- it('renders', () => {
- render(
-
- 1
- 2
-
- )
- })
-})
-
-describe('Badge', () => {
- it('renders', () => {
- render(Default )
- })
-})
-
-describe('Heading', () => {
- it('renders', () => {
- render(Heading )
- })
-})
-
-describe('Score', () => {
- it('renders', () => {
- render( )
- })
-})
-
-describe('Text', () => {
- it('renders', () => {
- render(Text )
- })
-})
-
-describe('Logo', () => {
- it('renders', () => {
- render( )
- })
-})
-
-describe('Container', () => {
- it('renders', () => {
- render(Container )
- })
-})
-
-describe('Combobox', () => {
- it('renders', () => {
- render( )
- })
-})
diff --git a/integration/package.json b/integration/package.json
deleted file mode 100644
index 4300f6a7..00000000
--- a/integration/package.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "name": "integration",
- "version": "1.0.0",
- "description": "",
- "main": "index.js",
- "scripts": {
- "test": "vitest"
- },
- "keywords": [],
- "author": "",
- "type": "module",
- "license": "ISC",
- "dependencies": {
- "@speakeasy-api/moonshine": "*",
- "@testing-library/jest-dom": "^6.6.2",
- "@testing-library/react": "^16.0.1",
- "react": "^18.3.1",
- "react-dom": "^18.3.1",
- "vite": "^5.4.10",
- "vitest": "^2.1.3"
- }
-}
diff --git a/integration/pnpm-lock.yaml b/integration/pnpm-lock.yaml
deleted file mode 100644
index 79444b18..00000000
--- a/integration/pnpm-lock.yaml
+++ /dev/null
@@ -1,1099 +0,0 @@
-lockfileVersion: '9.0'
-
-settings:
- autoInstallPeers: true
- excludeLinksFromLockfile: false
-
-importers:
-
- .:
- dependencies:
- '@speakeasy-api/moonshine':
- specifier: '*'
- version: link:..
- '@testing-library/jest-dom':
- specifier: ^6.6.2
- version: 6.6.2
- '@testing-library/react':
- specifier: ^16.0.1
- version: 16.0.1(@testing-library/dom@10.4.0)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- react:
- specifier: ^18.3.1
- version: 18.3.1
- react-dom:
- specifier: ^18.3.1
- version: 18.3.1(react@18.3.1)
- vite:
- specifier: ^5.4.10
- version: 5.4.10
- vitest:
- specifier: ^2.1.3
- version: 2.1.3
-
-packages:
-
- '@adobe/css-tools@4.4.0':
- resolution: {integrity: sha512-Ff9+ksdQQB3rMncgqDK78uLznstjyfIf2Arnh22pW8kBpLs6rpKDwgnZT46hin5Hl1WzazzK64DOrhSwYpS7bQ==}
-
- '@babel/code-frame@7.26.0':
- resolution: {integrity: sha512-INCKxTtbXtcNbUZ3YXutwMpEleqttcswhAdee7dhuoVrD2cnuc3PqtERBtxkX5nziX9vnBL8WXmSGwv8CuPV6g==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-validator-identifier@7.25.9':
- resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==}
- engines: {node: '>=6.9.0'}
-
- '@babel/runtime@7.26.0':
- resolution: {integrity: sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==}
- engines: {node: '>=6.9.0'}
-
- '@esbuild/aix-ppc64@0.21.5':
- resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==}
- engines: {node: '>=12'}
- cpu: [ppc64]
- os: [aix]
-
- '@esbuild/android-arm64@0.21.5':
- resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==}
- engines: {node: '>=12'}
- cpu: [arm64]
- os: [android]
-
- '@esbuild/android-arm@0.21.5':
- resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==}
- engines: {node: '>=12'}
- cpu: [arm]
- os: [android]
-
- '@esbuild/android-x64@0.21.5':
- resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [android]
-
- '@esbuild/darwin-arm64@0.21.5':
- resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==}
- engines: {node: '>=12'}
- cpu: [arm64]
- os: [darwin]
-
- '@esbuild/darwin-x64@0.21.5':
- resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [darwin]
-
- '@esbuild/freebsd-arm64@0.21.5':
- resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==}
- engines: {node: '>=12'}
- cpu: [arm64]
- os: [freebsd]
-
- '@esbuild/freebsd-x64@0.21.5':
- resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [freebsd]
-
- '@esbuild/linux-arm64@0.21.5':
- resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==}
- engines: {node: '>=12'}
- cpu: [arm64]
- os: [linux]
-
- '@esbuild/linux-arm@0.21.5':
- resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==}
- engines: {node: '>=12'}
- cpu: [arm]
- os: [linux]
-
- '@esbuild/linux-ia32@0.21.5':
- resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==}
- engines: {node: '>=12'}
- cpu: [ia32]
- os: [linux]
-
- '@esbuild/linux-loong64@0.21.5':
- resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==}
- engines: {node: '>=12'}
- cpu: [loong64]
- os: [linux]
-
- '@esbuild/linux-mips64el@0.21.5':
- resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==}
- engines: {node: '>=12'}
- cpu: [mips64el]
- os: [linux]
-
- '@esbuild/linux-ppc64@0.21.5':
- resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==}
- engines: {node: '>=12'}
- cpu: [ppc64]
- os: [linux]
-
- '@esbuild/linux-riscv64@0.21.5':
- resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==}
- engines: {node: '>=12'}
- cpu: [riscv64]
- os: [linux]
-
- '@esbuild/linux-s390x@0.21.5':
- resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==}
- engines: {node: '>=12'}
- cpu: [s390x]
- os: [linux]
-
- '@esbuild/linux-x64@0.21.5':
- resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [linux]
-
- '@esbuild/netbsd-x64@0.21.5':
- resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [netbsd]
-
- '@esbuild/openbsd-x64@0.21.5':
- resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [openbsd]
-
- '@esbuild/sunos-x64@0.21.5':
- resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [sunos]
-
- '@esbuild/win32-arm64@0.21.5':
- resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==}
- engines: {node: '>=12'}
- cpu: [arm64]
- os: [win32]
-
- '@esbuild/win32-ia32@0.21.5':
- resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==}
- engines: {node: '>=12'}
- cpu: [ia32]
- os: [win32]
-
- '@esbuild/win32-x64@0.21.5':
- resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [win32]
-
- '@jridgewell/sourcemap-codec@1.5.0':
- resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
-
- '@rollup/rollup-android-arm-eabi@4.24.0':
- resolution: {integrity: sha512-Q6HJd7Y6xdB48x8ZNVDOqsbh2uByBhgK8PiQgPhwkIw/HC/YX5Ghq2mQY5sRMZWHb3VsFkWooUVOZHKr7DmDIA==}
- cpu: [arm]
- os: [android]
-
- '@rollup/rollup-android-arm64@4.24.0':
- resolution: {integrity: sha512-ijLnS1qFId8xhKjT81uBHuuJp2lU4x2yxa4ctFPtG+MqEE6+C5f/+X/bStmxapgmwLwiL3ih122xv8kVARNAZA==}
- cpu: [arm64]
- os: [android]
-
- '@rollup/rollup-darwin-arm64@4.24.0':
- resolution: {integrity: sha512-bIv+X9xeSs1XCk6DVvkO+S/z8/2AMt/2lMqdQbMrmVpgFvXlmde9mLcbQpztXm1tajC3raFDqegsH18HQPMYtA==}
- cpu: [arm64]
- os: [darwin]
-
- '@rollup/rollup-darwin-x64@4.24.0':
- resolution: {integrity: sha512-X6/nOwoFN7RT2svEQWUsW/5C/fYMBe4fnLK9DQk4SX4mgVBiTA9h64kjUYPvGQ0F/9xwJ5U5UfTbl6BEjaQdBQ==}
- cpu: [x64]
- os: [darwin]
-
- '@rollup/rollup-linux-arm-gnueabihf@4.24.0':
- resolution: {integrity: sha512-0KXvIJQMOImLCVCz9uvvdPgfyWo93aHHp8ui3FrtOP57svqrF/roSSR5pjqL2hcMp0ljeGlU4q9o/rQaAQ3AYA==}
- cpu: [arm]
- os: [linux]
-
- '@rollup/rollup-linux-arm-musleabihf@4.24.0':
- resolution: {integrity: sha512-it2BW6kKFVh8xk/BnHfakEeoLPv8STIISekpoF+nBgWM4d55CZKc7T4Dx1pEbTnYm/xEKMgy1MNtYuoA8RFIWw==}
- cpu: [arm]
- os: [linux]
-
- '@rollup/rollup-linux-arm64-gnu@4.24.0':
- resolution: {integrity: sha512-i0xTLXjqap2eRfulFVlSnM5dEbTVque/3Pi4g2y7cxrs7+a9De42z4XxKLYJ7+OhE3IgxvfQM7vQc43bwTgPwA==}
- cpu: [arm64]
- os: [linux]
-
- '@rollup/rollup-linux-arm64-musl@4.24.0':
- resolution: {integrity: sha512-9E6MKUJhDuDh604Qco5yP/3qn3y7SLXYuiC0Rpr89aMScS2UAmK1wHP2b7KAa1nSjWJc/f/Lc0Wl1L47qjiyQw==}
- cpu: [arm64]
- os: [linux]
-
- '@rollup/rollup-linux-powerpc64le-gnu@4.24.0':
- resolution: {integrity: sha512-2XFFPJ2XMEiF5Zi2EBf4h73oR1V/lycirxZxHZNc93SqDN/IWhYYSYj8I9381ikUFXZrz2v7r2tOVk2NBwxrWw==}
- cpu: [ppc64]
- os: [linux]
-
- '@rollup/rollup-linux-riscv64-gnu@4.24.0':
- resolution: {integrity: sha512-M3Dg4hlwuntUCdzU7KjYqbbd+BLq3JMAOhCKdBE3TcMGMZbKkDdJ5ivNdehOssMCIokNHFOsv7DO4rlEOfyKpg==}
- cpu: [riscv64]
- os: [linux]
-
- '@rollup/rollup-linux-s390x-gnu@4.24.0':
- resolution: {integrity: sha512-mjBaoo4ocxJppTorZVKWFpy1bfFj9FeCMJqzlMQGjpNPY9JwQi7OuS1axzNIk0nMX6jSgy6ZURDZ2w0QW6D56g==}
- cpu: [s390x]
- os: [linux]
-
- '@rollup/rollup-linux-x64-gnu@4.24.0':
- resolution: {integrity: sha512-ZXFk7M72R0YYFN5q13niV0B7G8/5dcQ9JDp8keJSfr3GoZeXEoMHP/HlvqROA3OMbMdfr19IjCeNAnPUG93b6A==}
- cpu: [x64]
- os: [linux]
-
- '@rollup/rollup-linux-x64-musl@4.24.0':
- resolution: {integrity: sha512-w1i+L7kAXZNdYl+vFvzSZy8Y1arS7vMgIy8wusXJzRrPyof5LAb02KGr1PD2EkRcl73kHulIID0M501lN+vobQ==}
- cpu: [x64]
- os: [linux]
-
- '@rollup/rollup-win32-arm64-msvc@4.24.0':
- resolution: {integrity: sha512-VXBrnPWgBpVDCVY6XF3LEW0pOU51KbaHhccHw6AS6vBWIC60eqsH19DAeeObl+g8nKAz04QFdl/Cefta0xQtUQ==}
- cpu: [arm64]
- os: [win32]
-
- '@rollup/rollup-win32-ia32-msvc@4.24.0':
- resolution: {integrity: sha512-xrNcGDU0OxVcPTH/8n/ShH4UevZxKIO6HJFK0e15XItZP2UcaiLFd5kiX7hJnqCbSztUF8Qot+JWBC/QXRPYWQ==}
- cpu: [ia32]
- os: [win32]
-
- '@rollup/rollup-win32-x64-msvc@4.24.0':
- resolution: {integrity: sha512-fbMkAF7fufku0N2dE5TBXcNlg0pt0cJue4xBRE2Qc5Vqikxr4VCgKj/ht6SMdFcOacVA9rqF70APJ8RN/4vMJw==}
- cpu: [x64]
- os: [win32]
-
- '@testing-library/dom@10.4.0':
- resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==}
- engines: {node: '>=18'}
-
- '@testing-library/jest-dom@6.6.2':
- resolution: {integrity: sha512-P6GJD4yqc9jZLbe98j/EkyQDTPgqftohZF5FBkHY5BUERZmcf4HeO2k0XaefEg329ux2p21i1A1DmyQ1kKw2Jw==}
- engines: {node: '>=14', npm: '>=6', yarn: '>=1'}
-
- '@testing-library/react@16.0.1':
- resolution: {integrity: sha512-dSmwJVtJXmku+iocRhWOUFbrERC76TX2Mnf0ATODz8brzAZrMBbzLwQixlBSanZxR6LddK3eiwpSFZgDET1URg==}
- engines: {node: '>=18'}
- peerDependencies:
- '@testing-library/dom': ^10.0.0
- '@types/react': ^18.0.0
- '@types/react-dom': ^18.0.0
- react: ^18.0.0
- react-dom: ^18.0.0
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@types/aria-query@5.0.4':
- resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==}
-
- '@types/estree@1.0.6':
- resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==}
-
- '@types/prop-types@15.7.13':
- resolution: {integrity: sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==}
-
- '@types/react@18.3.12':
- resolution: {integrity: sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==}
-
- '@vitest/expect@2.1.3':
- resolution: {integrity: sha512-SNBoPubeCJhZ48agjXruCI57DvxcsivVDdWz+SSsmjTT4QN/DfHk3zB/xKsJqMs26bLZ/pNRLnCf0j679i0uWQ==}
-
- '@vitest/mocker@2.1.3':
- resolution: {integrity: sha512-eSpdY/eJDuOvuTA3ASzCjdithHa+GIF1L4PqtEELl6Qa3XafdMLBpBlZCIUCX2J+Q6sNmjmxtosAG62fK4BlqQ==}
- peerDependencies:
- '@vitest/spy': 2.1.3
- msw: ^2.3.5
- vite: ^5.0.0
- peerDependenciesMeta:
- msw:
- optional: true
- vite:
- optional: true
-
- '@vitest/pretty-format@2.1.3':
- resolution: {integrity: sha512-XH1XdtoLZCpqV59KRbPrIhFCOO0hErxrQCMcvnQete3Vibb9UeIOX02uFPfVn3Z9ZXsq78etlfyhnkmIZSzIwQ==}
-
- '@vitest/runner@2.1.3':
- resolution: {integrity: sha512-JGzpWqmFJ4fq5ZKHtVO3Xuy1iF2rHGV4d/pdzgkYHm1+gOzNZtqjvyiaDGJytRyMU54qkxpNzCx+PErzJ1/JqQ==}
-
- '@vitest/snapshot@2.1.3':
- resolution: {integrity: sha512-qWC2mWc7VAXmjAkEKxrScWHWFyCQx/cmiZtuGqMi+WwqQJ2iURsVY4ZfAK6dVo6K2smKRU6l3BPwqEBvhnpQGg==}
-
- '@vitest/spy@2.1.3':
- resolution: {integrity: sha512-Nb2UzbcUswzeSP7JksMDaqsI43Sj5+Kry6ry6jQJT4b5gAK+NS9NED6mDb8FlMRCX8m5guaHCDZmqYMMWRy5nQ==}
-
- '@vitest/utils@2.1.3':
- resolution: {integrity: sha512-xpiVfDSg1RrYT0tX6czgerkpcKFmFOF/gCr30+Mve5V2kewCy4Prn1/NDMSRwaSmT7PRaOF83wu+bEtsY1wrvA==}
-
- ansi-regex@5.0.1:
- resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
- engines: {node: '>=8'}
-
- ansi-styles@4.3.0:
- resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
- engines: {node: '>=8'}
-
- ansi-styles@5.2.0:
- resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==}
- engines: {node: '>=10'}
-
- aria-query@5.3.0:
- resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==}
-
- assertion-error@2.0.1:
- resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==}
- engines: {node: '>=12'}
-
- cac@6.7.14:
- resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==}
- engines: {node: '>=8'}
-
- chai@5.1.2:
- resolution: {integrity: sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==}
- engines: {node: '>=12'}
-
- chalk@3.0.0:
- resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==}
- engines: {node: '>=8'}
-
- chalk@4.1.2:
- resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
- engines: {node: '>=10'}
-
- check-error@2.1.1:
- resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==}
- engines: {node: '>= 16'}
-
- color-convert@2.0.1:
- resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
- engines: {node: '>=7.0.0'}
-
- color-name@1.1.4:
- resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
-
- css.escape@1.5.1:
- resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==}
-
- csstype@3.1.3:
- resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
-
- debug@4.3.7:
- resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==}
- engines: {node: '>=6.0'}
- peerDependencies:
- supports-color: '*'
- peerDependenciesMeta:
- supports-color:
- optional: true
-
- deep-eql@5.0.2:
- resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==}
- engines: {node: '>=6'}
-
- dequal@2.0.3:
- resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
- engines: {node: '>=6'}
-
- dom-accessibility-api@0.5.16:
- resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==}
-
- dom-accessibility-api@0.6.3:
- resolution: {integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==}
-
- esbuild@0.21.5:
- resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==}
- engines: {node: '>=12'}
- hasBin: true
-
- estree-walker@3.0.3:
- resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==}
-
- fsevents@2.3.3:
- resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
- engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
- os: [darwin]
-
- has-flag@4.0.0:
- resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
- engines: {node: '>=8'}
-
- indent-string@4.0.0:
- resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==}
- engines: {node: '>=8'}
-
- js-tokens@4.0.0:
- resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
-
- lodash@4.17.21:
- resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
-
- loose-envify@1.4.0:
- resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
- hasBin: true
-
- loupe@3.1.2:
- resolution: {integrity: sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==}
-
- lz-string@1.5.0:
- resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==}
- hasBin: true
-
- magic-string@0.30.12:
- resolution: {integrity: sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==}
-
- min-indent@1.0.1:
- resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==}
- engines: {node: '>=4'}
-
- ms@2.1.3:
- resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
-
- nanoid@3.3.7:
- resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
- engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
- hasBin: true
-
- pathe@1.1.2:
- resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==}
-
- pathval@2.0.0:
- resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==}
- engines: {node: '>= 14.16'}
-
- picocolors@1.1.1:
- resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
-
- postcss@8.4.47:
- resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==}
- engines: {node: ^10 || ^12 || >=14}
-
- pretty-format@27.5.1:
- resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==}
- engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
-
- react-dom@18.3.1:
- resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==}
- peerDependencies:
- react: ^18.3.1
-
- react-is@17.0.2:
- resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==}
-
- react@18.3.1:
- resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==}
- engines: {node: '>=0.10.0'}
-
- redent@3.0.0:
- resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==}
- engines: {node: '>=8'}
-
- regenerator-runtime@0.14.1:
- resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==}
-
- rollup@4.24.0:
- resolution: {integrity: sha512-DOmrlGSXNk1DM0ljiQA+i+o0rSLhtii1je5wgk60j49d1jHT5YYttBv1iWOnYSTG+fZZESUOSNiAl89SIet+Cg==}
- engines: {node: '>=18.0.0', npm: '>=8.0.0'}
- hasBin: true
-
- scheduler@0.23.2:
- resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==}
-
- siginfo@2.0.0:
- resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==}
-
- source-map-js@1.2.1:
- resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
- engines: {node: '>=0.10.0'}
-
- stackback@0.0.2:
- resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==}
-
- std-env@3.7.0:
- resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==}
-
- strip-indent@3.0.0:
- resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==}
- engines: {node: '>=8'}
-
- supports-color@7.2.0:
- resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
- engines: {node: '>=8'}
-
- tinybench@2.9.0:
- resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==}
-
- tinyexec@0.3.1:
- resolution: {integrity: sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==}
-
- tinypool@1.0.1:
- resolution: {integrity: sha512-URZYihUbRPcGv95En+sz6MfghfIc2OJ1sv/RmhWZLouPY0/8Vo80viwPvg3dlaS9fuq7fQMEfgRRK7BBZThBEA==}
- engines: {node: ^18.0.0 || >=20.0.0}
-
- tinyrainbow@1.2.0:
- resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==}
- engines: {node: '>=14.0.0'}
-
- tinyspy@3.0.2:
- resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==}
- engines: {node: '>=14.0.0'}
-
- vite-node@2.1.3:
- resolution: {integrity: sha512-I1JadzO+xYX887S39Do+paRePCKoiDrWRRjp9kkG5he0t7RXNvPAJPCQSJqbGN4uCrFFeS3Kj3sLqY8NMYBEdA==}
- engines: {node: ^18.0.0 || >=20.0.0}
- hasBin: true
-
- vite@5.4.10:
- resolution: {integrity: sha512-1hvaPshuPUtxeQ0hsVH3Mud0ZanOLwVTneA1EgbAM5LhaZEqyPWGRQ7BtaMvUrTDeEaC8pxtj6a6jku3x4z6SQ==}
- engines: {node: ^18.0.0 || >=20.0.0}
- hasBin: true
- peerDependencies:
- '@types/node': ^18.0.0 || >=20.0.0
- less: '*'
- lightningcss: ^1.21.0
- sass: '*'
- sass-embedded: '*'
- stylus: '*'
- sugarss: '*'
- terser: ^5.4.0
- peerDependenciesMeta:
- '@types/node':
- optional: true
- less:
- optional: true
- lightningcss:
- optional: true
- sass:
- optional: true
- sass-embedded:
- optional: true
- stylus:
- optional: true
- sugarss:
- optional: true
- terser:
- optional: true
-
- vitest@2.1.3:
- resolution: {integrity: sha512-Zrxbg/WiIvUP2uEzelDNTXmEMJXuzJ1kCpbDvaKByFA9MNeO95V+7r/3ti0qzJzrxdyuUw5VduN7k+D3VmVOSA==}
- engines: {node: ^18.0.0 || >=20.0.0}
- hasBin: true
- peerDependencies:
- '@edge-runtime/vm': '*'
- '@types/node': ^18.0.0 || >=20.0.0
- '@vitest/browser': 2.1.3
- '@vitest/ui': 2.1.3
- happy-dom: '*'
- jsdom: '*'
- peerDependenciesMeta:
- '@edge-runtime/vm':
- optional: true
- '@types/node':
- optional: true
- '@vitest/browser':
- optional: true
- '@vitest/ui':
- optional: true
- happy-dom:
- optional: true
- jsdom:
- optional: true
-
- why-is-node-running@2.3.0:
- resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==}
- engines: {node: '>=8'}
- hasBin: true
-
-snapshots:
-
- '@adobe/css-tools@4.4.0': {}
-
- '@babel/code-frame@7.26.0':
- dependencies:
- '@babel/helper-validator-identifier': 7.25.9
- js-tokens: 4.0.0
- picocolors: 1.1.1
-
- '@babel/helper-validator-identifier@7.25.9': {}
-
- '@babel/runtime@7.26.0':
- dependencies:
- regenerator-runtime: 0.14.1
-
- '@esbuild/aix-ppc64@0.21.5':
- optional: true
-
- '@esbuild/android-arm64@0.21.5':
- optional: true
-
- '@esbuild/android-arm@0.21.5':
- optional: true
-
- '@esbuild/android-x64@0.21.5':
- optional: true
-
- '@esbuild/darwin-arm64@0.21.5':
- optional: true
-
- '@esbuild/darwin-x64@0.21.5':
- optional: true
-
- '@esbuild/freebsd-arm64@0.21.5':
- optional: true
-
- '@esbuild/freebsd-x64@0.21.5':
- optional: true
-
- '@esbuild/linux-arm64@0.21.5':
- optional: true
-
- '@esbuild/linux-arm@0.21.5':
- optional: true
-
- '@esbuild/linux-ia32@0.21.5':
- optional: true
-
- '@esbuild/linux-loong64@0.21.5':
- optional: true
-
- '@esbuild/linux-mips64el@0.21.5':
- optional: true
-
- '@esbuild/linux-ppc64@0.21.5':
- optional: true
-
- '@esbuild/linux-riscv64@0.21.5':
- optional: true
-
- '@esbuild/linux-s390x@0.21.5':
- optional: true
-
- '@esbuild/linux-x64@0.21.5':
- optional: true
-
- '@esbuild/netbsd-x64@0.21.5':
- optional: true
-
- '@esbuild/openbsd-x64@0.21.5':
- optional: true
-
- '@esbuild/sunos-x64@0.21.5':
- optional: true
-
- '@esbuild/win32-arm64@0.21.5':
- optional: true
-
- '@esbuild/win32-ia32@0.21.5':
- optional: true
-
- '@esbuild/win32-x64@0.21.5':
- optional: true
-
- '@jridgewell/sourcemap-codec@1.5.0': {}
-
- '@rollup/rollup-android-arm-eabi@4.24.0':
- optional: true
-
- '@rollup/rollup-android-arm64@4.24.0':
- optional: true
-
- '@rollup/rollup-darwin-arm64@4.24.0':
- optional: true
-
- '@rollup/rollup-darwin-x64@4.24.0':
- optional: true
-
- '@rollup/rollup-linux-arm-gnueabihf@4.24.0':
- optional: true
-
- '@rollup/rollup-linux-arm-musleabihf@4.24.0':
- optional: true
-
- '@rollup/rollup-linux-arm64-gnu@4.24.0':
- optional: true
-
- '@rollup/rollup-linux-arm64-musl@4.24.0':
- optional: true
-
- '@rollup/rollup-linux-powerpc64le-gnu@4.24.0':
- optional: true
-
- '@rollup/rollup-linux-riscv64-gnu@4.24.0':
- optional: true
-
- '@rollup/rollup-linux-s390x-gnu@4.24.0':
- optional: true
-
- '@rollup/rollup-linux-x64-gnu@4.24.0':
- optional: true
-
- '@rollup/rollup-linux-x64-musl@4.24.0':
- optional: true
-
- '@rollup/rollup-win32-arm64-msvc@4.24.0':
- optional: true
-
- '@rollup/rollup-win32-ia32-msvc@4.24.0':
- optional: true
-
- '@rollup/rollup-win32-x64-msvc@4.24.0':
- optional: true
-
- '@testing-library/dom@10.4.0':
- dependencies:
- '@babel/code-frame': 7.26.0
- '@babel/runtime': 7.26.0
- '@types/aria-query': 5.0.4
- aria-query: 5.3.0
- chalk: 4.1.2
- dom-accessibility-api: 0.5.16
- lz-string: 1.5.0
- pretty-format: 27.5.1
-
- '@testing-library/jest-dom@6.6.2':
- dependencies:
- '@adobe/css-tools': 4.4.0
- aria-query: 5.3.0
- chalk: 3.0.0
- css.escape: 1.5.1
- dom-accessibility-api: 0.6.3
- lodash: 4.17.21
- redent: 3.0.0
-
- '@testing-library/react@16.0.1(@testing-library/dom@10.4.0)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
- dependencies:
- '@babel/runtime': 7.26.0
- '@testing-library/dom': 10.4.0
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
- optionalDependencies:
- '@types/react': 18.3.12
-
- '@types/aria-query@5.0.4': {}
-
- '@types/estree@1.0.6': {}
-
- '@types/prop-types@15.7.13':
- optional: true
-
- '@types/react@18.3.12':
- dependencies:
- '@types/prop-types': 15.7.13
- csstype: 3.1.3
- optional: true
-
- '@vitest/expect@2.1.3':
- dependencies:
- '@vitest/spy': 2.1.3
- '@vitest/utils': 2.1.3
- chai: 5.1.2
- tinyrainbow: 1.2.0
-
- '@vitest/mocker@2.1.3(@vitest/spy@2.1.3)(vite@5.4.10)':
- dependencies:
- '@vitest/spy': 2.1.3
- estree-walker: 3.0.3
- magic-string: 0.30.12
- optionalDependencies:
- vite: 5.4.10
-
- '@vitest/pretty-format@2.1.3':
- dependencies:
- tinyrainbow: 1.2.0
-
- '@vitest/runner@2.1.3':
- dependencies:
- '@vitest/utils': 2.1.3
- pathe: 1.1.2
-
- '@vitest/snapshot@2.1.3':
- dependencies:
- '@vitest/pretty-format': 2.1.3
- magic-string: 0.30.12
- pathe: 1.1.2
-
- '@vitest/spy@2.1.3':
- dependencies:
- tinyspy: 3.0.2
-
- '@vitest/utils@2.1.3':
- dependencies:
- '@vitest/pretty-format': 2.1.3
- loupe: 3.1.2
- tinyrainbow: 1.2.0
-
- ansi-regex@5.0.1: {}
-
- ansi-styles@4.3.0:
- dependencies:
- color-convert: 2.0.1
-
- ansi-styles@5.2.0: {}
-
- aria-query@5.3.0:
- dependencies:
- dequal: 2.0.3
-
- assertion-error@2.0.1: {}
-
- cac@6.7.14: {}
-
- chai@5.1.2:
- dependencies:
- assertion-error: 2.0.1
- check-error: 2.1.1
- deep-eql: 5.0.2
- loupe: 3.1.2
- pathval: 2.0.0
-
- chalk@3.0.0:
- dependencies:
- ansi-styles: 4.3.0
- supports-color: 7.2.0
-
- chalk@4.1.2:
- dependencies:
- ansi-styles: 4.3.0
- supports-color: 7.2.0
-
- check-error@2.1.1: {}
-
- color-convert@2.0.1:
- dependencies:
- color-name: 1.1.4
-
- color-name@1.1.4: {}
-
- css.escape@1.5.1: {}
-
- csstype@3.1.3:
- optional: true
-
- debug@4.3.7:
- dependencies:
- ms: 2.1.3
-
- deep-eql@5.0.2: {}
-
- dequal@2.0.3: {}
-
- dom-accessibility-api@0.5.16: {}
-
- dom-accessibility-api@0.6.3: {}
-
- esbuild@0.21.5:
- optionalDependencies:
- '@esbuild/aix-ppc64': 0.21.5
- '@esbuild/android-arm': 0.21.5
- '@esbuild/android-arm64': 0.21.5
- '@esbuild/android-x64': 0.21.5
- '@esbuild/darwin-arm64': 0.21.5
- '@esbuild/darwin-x64': 0.21.5
- '@esbuild/freebsd-arm64': 0.21.5
- '@esbuild/freebsd-x64': 0.21.5
- '@esbuild/linux-arm': 0.21.5
- '@esbuild/linux-arm64': 0.21.5
- '@esbuild/linux-ia32': 0.21.5
- '@esbuild/linux-loong64': 0.21.5
- '@esbuild/linux-mips64el': 0.21.5
- '@esbuild/linux-ppc64': 0.21.5
- '@esbuild/linux-riscv64': 0.21.5
- '@esbuild/linux-s390x': 0.21.5
- '@esbuild/linux-x64': 0.21.5
- '@esbuild/netbsd-x64': 0.21.5
- '@esbuild/openbsd-x64': 0.21.5
- '@esbuild/sunos-x64': 0.21.5
- '@esbuild/win32-arm64': 0.21.5
- '@esbuild/win32-ia32': 0.21.5
- '@esbuild/win32-x64': 0.21.5
-
- estree-walker@3.0.3:
- dependencies:
- '@types/estree': 1.0.6
-
- fsevents@2.3.3:
- optional: true
-
- has-flag@4.0.0: {}
-
- indent-string@4.0.0: {}
-
- js-tokens@4.0.0: {}
-
- lodash@4.17.21: {}
-
- loose-envify@1.4.0:
- dependencies:
- js-tokens: 4.0.0
-
- loupe@3.1.2: {}
-
- lz-string@1.5.0: {}
-
- magic-string@0.30.12:
- dependencies:
- '@jridgewell/sourcemap-codec': 1.5.0
-
- min-indent@1.0.1: {}
-
- ms@2.1.3: {}
-
- nanoid@3.3.7: {}
-
- pathe@1.1.2: {}
-
- pathval@2.0.0: {}
-
- picocolors@1.1.1: {}
-
- postcss@8.4.47:
- dependencies:
- nanoid: 3.3.7
- picocolors: 1.1.1
- source-map-js: 1.2.1
-
- pretty-format@27.5.1:
- dependencies:
- ansi-regex: 5.0.1
- ansi-styles: 5.2.0
- react-is: 17.0.2
-
- react-dom@18.3.1(react@18.3.1):
- dependencies:
- loose-envify: 1.4.0
- react: 18.3.1
- scheduler: 0.23.2
-
- react-is@17.0.2: {}
-
- react@18.3.1:
- dependencies:
- loose-envify: 1.4.0
-
- redent@3.0.0:
- dependencies:
- indent-string: 4.0.0
- strip-indent: 3.0.0
-
- regenerator-runtime@0.14.1: {}
-
- rollup@4.24.0:
- dependencies:
- '@types/estree': 1.0.6
- optionalDependencies:
- '@rollup/rollup-android-arm-eabi': 4.24.0
- '@rollup/rollup-android-arm64': 4.24.0
- '@rollup/rollup-darwin-arm64': 4.24.0
- '@rollup/rollup-darwin-x64': 4.24.0
- '@rollup/rollup-linux-arm-gnueabihf': 4.24.0
- '@rollup/rollup-linux-arm-musleabihf': 4.24.0
- '@rollup/rollup-linux-arm64-gnu': 4.24.0
- '@rollup/rollup-linux-arm64-musl': 4.24.0
- '@rollup/rollup-linux-powerpc64le-gnu': 4.24.0
- '@rollup/rollup-linux-riscv64-gnu': 4.24.0
- '@rollup/rollup-linux-s390x-gnu': 4.24.0
- '@rollup/rollup-linux-x64-gnu': 4.24.0
- '@rollup/rollup-linux-x64-musl': 4.24.0
- '@rollup/rollup-win32-arm64-msvc': 4.24.0
- '@rollup/rollup-win32-ia32-msvc': 4.24.0
- '@rollup/rollup-win32-x64-msvc': 4.24.0
- fsevents: 2.3.3
-
- scheduler@0.23.2:
- dependencies:
- loose-envify: 1.4.0
-
- siginfo@2.0.0: {}
-
- source-map-js@1.2.1: {}
-
- stackback@0.0.2: {}
-
- std-env@3.7.0: {}
-
- strip-indent@3.0.0:
- dependencies:
- min-indent: 1.0.1
-
- supports-color@7.2.0:
- dependencies:
- has-flag: 4.0.0
-
- tinybench@2.9.0: {}
-
- tinyexec@0.3.1: {}
-
- tinypool@1.0.1: {}
-
- tinyrainbow@1.2.0: {}
-
- tinyspy@3.0.2: {}
-
- vite-node@2.1.3:
- dependencies:
- cac: 6.7.14
- debug: 4.3.7
- pathe: 1.1.2
- vite: 5.4.10
- transitivePeerDependencies:
- - '@types/node'
- - less
- - lightningcss
- - sass
- - sass-embedded
- - stylus
- - sugarss
- - supports-color
- - terser
-
- vite@5.4.10:
- dependencies:
- esbuild: 0.21.5
- postcss: 8.4.47
- rollup: 4.24.0
- optionalDependencies:
- fsevents: 2.3.3
-
- vitest@2.1.3:
- dependencies:
- '@vitest/expect': 2.1.3
- '@vitest/mocker': 2.1.3(@vitest/spy@2.1.3)(vite@5.4.10)
- '@vitest/pretty-format': 2.1.3
- '@vitest/runner': 2.1.3
- '@vitest/snapshot': 2.1.3
- '@vitest/spy': 2.1.3
- '@vitest/utils': 2.1.3
- chai: 5.1.2
- debug: 4.3.7
- magic-string: 0.30.12
- pathe: 1.1.2
- std-env: 3.7.0
- tinybench: 2.9.0
- tinyexec: 0.3.1
- tinypool: 1.0.1
- tinyrainbow: 1.2.0
- vite: 5.4.10
- vite-node: 2.1.3
- why-is-node-running: 2.3.0
- transitivePeerDependencies:
- - less
- - lightningcss
- - msw
- - sass
- - sass-embedded
- - stylus
- - sugarss
- - supports-color
- - terser
-
- why-is-node-running@2.3.0:
- dependencies:
- siginfo: 2.0.0
- stackback: 0.0.2
diff --git a/integration/setup.js b/integration/setup.js
deleted file mode 100644
index f533ae70..00000000
--- a/integration/setup.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import { expect, afterEach } from 'vitest'
-import { cleanup } from '@testing-library/react'
-import * as matchers from '@testing-library/jest-dom/matchers'
-
-expect.extend(matchers)
-
-afterEach(() => {
- cleanup()
-})
diff --git a/integration/tsconfig.json b/integration/tsconfig.json
deleted file mode 100644
index 2bf0ba5d..00000000
--- a/integration/tsconfig.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "compilerOptions": {
- "module": "esnext",
- "moduleResolution": "node",
- "esModuleInterop": true,
- "target": "es2019",
- "declaration": true,
- "allowSyntheticDefaultImports": true,
- "outDir": "./dist",
- "strict": true,
- "allowJs": true,
- "jsx": "react-jsx",
- "forceConsistentCasingInFileNames": true,
- "skipLibCheck": true,
- "baseUrl": ".",
- "types": [
- "@testing-library/jest-dom"
- ],
- },
-}
\ No newline at end of file
diff --git a/integration/vite.config.mts b/integration/vite.config.mts
deleted file mode 100644
index 1b6241ce..00000000
--- a/integration/vite.config.mts
+++ /dev/null
@@ -1,19 +0,0 @@
-import { defineConfig } from 'vite'
-import path, { dirname } from 'path'
-import { fileURLToPath } from 'url'
-
-const __dirname = dirname(fileURLToPath(import.meta.url))
-
-export default defineConfig({
- test: {
- globals: true,
- environment: 'jsdom',
- setupFiles: './setup.js',
- },
- define: process.env.VITEST ? {} : { global: 'window' },
- resolve: {
- alias: {
- react: path.resolve(__dirname, 'node_modules/react'),
- },
- },
-})
diff --git a/package.json b/package.json
index 4e14859a..cc6f167b 100644
--- a/package.json
+++ b/package.json
@@ -4,18 +4,19 @@
"packageManager": "pnpm@9.0.0",
"description": "Speakeasy's design system Moonshine",
"sideEffects": false,
- "main": "dist/moonshine.cjs.js",
- "module": "dist/moonshine.es.js",
- "types": "dist/index.d.ts",
+ "main": "src/index.ts",
+ "module": "src/index.ts",
+ "types": "src/index.ts",
"exports": {
".": {
- "types": "./dist/index.d.ts",
- "require": "./dist/moonshine.cjs.js",
- "import": "./dist/moonshine.es.js"
+ "types": "./src/index.ts",
+ "import": "./src/index.ts",
+ "require": "./src/index.ts"
},
"./moonshine.css": {
- "require": "./dist/style.css",
- "import": "./dist/style.css"
+ "require": "./src/global.css",
+ "import": "./src/global.css",
+ "default": "./src/global.css"
},
"./src/global.css": {
"require": "./src/global.css",
@@ -26,28 +27,16 @@
"type": "git",
"url": "https://github.com/speakeasy-api/moonshine.git"
},
- "files": [
- "dist",
- "src/global.css",
- "src/base.css",
- "src/utilities.css",
- "types"
- ],
"scripts": {
- "clean": "rimraf dist",
- "build": "pnpm clean && vite build",
- "build:watch": "vite build --watch --mode development",
"type-check": "tsc --noEmit --skipLibCheck",
- "prepack": "pnpm build",
+ "prepack": "pnpm type-check",
"storybook": "storybook dev -p 6006",
"build-storybook": "storybook build",
"chromatic": "chromatic",
"lint": "eslint",
"lint:fix": "eslint --fix",
"test": "vitest",
- "analyze-bundle": "npx vite-bundle-visualizer",
- "generate:docs": "node scripts/generate-utility-docs.js",
- "postbuild": "pnpm generate:docs"
+ "generate:docs": "node scripts/generate-utility-docs.js"
},
"author": "Speakeasy",
"license": "ISC",
diff --git a/scripts/update-integration.sh b/scripts/update-integration.sh
deleted file mode 100755
index f31d5129..00000000
--- a/scripts/update-integration.sh
+++ /dev/null
@@ -1,8 +0,0 @@
-#! /bin/bash
-
-# Builds the package into dist/
-pnpm build
-
-# Links the package into the integration test app so that it is up to date
-cd integration
-pnpm link ../
diff --git a/src/components/AIChat/parts/AIChatMessageFilePart.tsx b/src/components/AIChat/parts/AIChatMessageFilePart.tsx
index 84768f90..eac3c185 100644
--- a/src/components/AIChat/parts/AIChatMessageFilePart.tsx
+++ b/src/components/AIChat/parts/AIChatMessageFilePart.tsx
@@ -1,5 +1,5 @@
import { cn } from '../../../lib/utils'
-import { Text } from '../../Text'
+import { Text } from '../../Text/index'
import type { BasePartProps } from '../types'
export interface AIChatMessageFilePartProps extends BasePartProps {
diff --git a/src/components/ActionBar/index.tsx b/src/components/ActionBar/index.tsx
index 8a3ea550..25b9a50e 100644
--- a/src/components/ActionBar/index.tsx
+++ b/src/components/ActionBar/index.tsx
@@ -1,12 +1,12 @@
-import { Icon } from '@/components/Icon'
-import { IconName } from '@/components/Icon/names'
+import { Icon } from '../Icon/index'
+import { IconName } from '../Icon/names'
import {
Tooltip,
TooltipContent,
TooltipProvider,
TooltipTrigger,
-} from '@/components/Tooltip'
-import { cn } from '@/lib/utils'
+} from '../Tooltip/index'
+import { cn } from '../../lib/utils'
import {
useDraggable,
DraggableAttributes,
diff --git a/src/components/Alert/index.tsx b/src/components/Alert/index.tsx
index 0d176371..4ed60005 100644
--- a/src/components/Alert/index.tsx
+++ b/src/components/Alert/index.tsx
@@ -1,9 +1,9 @@
import { cva, type VariantProps } from 'class-variance-authority'
import { Modifier, Variant } from './types'
-import { Icon } from '@/components/Icon'
+import { Icon } from '../Icon'
import { iconNames } from '../Icon/names'
import { useState } from 'react'
-import { cn } from '@/lib/utils'
+import { cn } from '../../lib/utils'
const flexClasses = 'flex flex-row items-center gap-3'
diff --git a/src/components/AppLayout/index.stories.tsx b/src/components/AppLayout/index.stories.tsx
index 3cec65d8..e632c26f 100644
--- a/src/components/AppLayout/index.stories.tsx
+++ b/src/components/AppLayout/index.stories.tsx
@@ -6,8 +6,8 @@ import { Text } from '../Text'
import { Icon } from '../Icon'
import { Button } from '../Button'
import React, { useState } from 'react'
-import { MoonshineConfigProvider } from '@/context/ConfigContext'
-import { useAppLayout } from '@/hooks/useAppLayout'
+import { MoonshineConfigProvider } from '../../context/ConfigContext'
+import { useAppLayout } from '../../hooks/useAppLayout'
type Story = StoryObj
diff --git a/src/components/AppLayout/index.tsx b/src/components/AppLayout/index.tsx
index 1e193c63..80d72c83 100644
--- a/src/components/AppLayout/index.tsx
+++ b/src/components/AppLayout/index.tsx
@@ -1,4 +1,4 @@
-import { cn, partitionBy } from '@/lib/utils'
+import { cn, partitionBy } from '../../lib/utils'
import React, {
Children,
isValidElement,
@@ -7,7 +7,7 @@ import React, {
} from 'react'
import { Slot } from '@radix-ui/react-slot'
import { Icon } from '../Icon'
-import { useAppLayout } from '@/hooks/useAppLayout'
+import { useAppLayout } from '../../hooks/useAppLayout'
import { motion } from 'motion/react'
import { Logo } from '../Logo'
import {
diff --git a/src/components/AppLayout/useAppLayoutKeys.ts b/src/components/AppLayout/useAppLayoutKeys.ts
index 7b64ea94..dd7f72a7 100644
--- a/src/components/AppLayout/useAppLayoutKeys.ts
+++ b/src/components/AppLayout/useAppLayoutKeys.ts
@@ -1,4 +1,4 @@
-import { useAppLayout } from '@/hooks/useAppLayout'
+import { useAppLayout } from '../../hooks/useAppLayout'
import { useCallback, useEffect } from 'react'
export function useAppLayoutKeys() {
diff --git a/src/components/Badge/index.tsx b/src/components/Badge/index.tsx
index 4d481e3b..06164bef 100644
--- a/src/components/Badge/index.tsx
+++ b/src/components/Badge/index.tsx
@@ -2,8 +2,8 @@ import * as React from 'react'
import { Slot } from '@radix-ui/react-slot'
import { cva } from 'class-variance-authority'
-import { cn } from '@/lib/utils'
-import { BadgeVariant } from '@/types'
+import { cn } from '../../lib/utils'
+import { BadgeVariant } from '../../types'
const BadgeLeftIcon = React.forwardRef<
HTMLSpanElement,
diff --git a/src/components/Button/index.tsx b/src/components/Button/index.tsx
index 19ff3090..b11d8984 100644
--- a/src/components/Button/index.tsx
+++ b/src/components/Button/index.tsx
@@ -2,8 +2,8 @@ import * as React from 'react'
import { Slot } from '@radix-ui/react-slot'
import { cva } from 'class-variance-authority'
-import { cn } from '@/lib/utils'
-import { ButtonSize, ButtonVariant, ButtonContext } from '@/types'
+import { cn } from '../../lib/utils'
+import { ButtonSize, ButtonVariant, ButtonContext } from '../../types'
// Lerp for angles, taking the shortest path around the circle
const lerpAngle = (a: number, b: number, t: number) => {
diff --git a/src/components/Card/index.tsx b/src/components/Card/index.tsx
index 43bc0078..2186aeab 100644
--- a/src/components/Card/index.tsx
+++ b/src/components/Card/index.tsx
@@ -1,4 +1,4 @@
-import { cn } from '@/lib/utils'
+import { cn } from '../../lib/utils'
import React, { FC, PropsWithChildren, ReactNode } from 'react'
import { Icon } from '../Icon'
import { Stack } from '../Stack'
@@ -6,7 +6,7 @@ import { Button } from '../Button'
import { Score } from '../Score'
import { iconNames } from '../Icon/names'
import { Children } from 'react'
-import { Range } from '@/lib/typeUtils'
+import { Range } from '../../lib/typeUtils'
type RightElement =
| {
diff --git a/src/components/CodeEditorLayout/index.stories.tsx b/src/components/CodeEditorLayout/index.stories.tsx
index 37e866b5..f5dae3eb 100644
--- a/src/components/CodeEditorLayout/index.stories.tsx
+++ b/src/components/CodeEditorLayout/index.stories.tsx
@@ -1,7 +1,7 @@
import { CodeEditor, CodeEditorTabProps } from '.'
import { Meta, StoryObj } from '@storybook/react-vite'
import { faker } from '@faker-js/faker'
-import { Icon } from '@/components/Icon'
+import { Icon } from '../Icon'
import { Key } from '../KeyHint'
import { useState } from 'react'
diff --git a/src/components/CodeEditorLayout/index.tsx b/src/components/CodeEditorLayout/index.tsx
index 46ccd525..908bfb48 100644
--- a/src/components/CodeEditorLayout/index.tsx
+++ b/src/components/CodeEditorLayout/index.tsx
@@ -1,5 +1,5 @@
-import { Icon } from '@/components/Icon'
-import { cn } from '@/lib/utils'
+import { Icon } from '../Icon'
+import { cn } from '../../lib/utils'
import {
isValidElement,
ReactNode,
diff --git a/src/components/CodeHighlight/Pre.tsx b/src/components/CodeHighlight/Pre.tsx
index e7c39d4c..89f82c06 100644
--- a/src/components/CodeHighlight/Pre.tsx
+++ b/src/components/CodeHighlight/Pre.tsx
@@ -1,6 +1,6 @@
import { forwardRef, HTMLAttributes } from 'react'
-import { HighlightedCode } from '@/lib/codeUtils'
-import { cn } from '@/lib/utils'
+import { HighlightedCode } from '../../lib/codeUtils'
+import { cn } from '../../lib/utils'
export interface PreProps
extends Omit, 'children'> {
diff --git a/src/components/CodePlayground/index.stories.tsx b/src/components/CodePlayground/index.stories.tsx
index d3fa4661..9e46b5d1 100644
--- a/src/components/CodePlayground/index.stories.tsx
+++ b/src/components/CodePlayground/index.stories.tsx
@@ -1,4 +1,4 @@
-import { Icon } from '@/components/Icon'
+import { Icon } from '../Icon'
import { CodePlayground, CodePlaygroundSnippets } from '.'
import { StoryObj, Meta } from '@storybook/react-vite'
import { useState } from 'react'
diff --git a/src/components/CodePlayground/index.tsx b/src/components/CodePlayground/index.tsx
index d44d8455..d177721c 100644
--- a/src/components/CodePlayground/index.tsx
+++ b/src/components/CodePlayground/index.tsx
@@ -15,23 +15,23 @@ import {
SelectItem,
SelectTrigger,
SelectValue,
-} from '@/components/Select'
-import { prettyLanguageName, SupportedLanguage } from '@/types'
-import '@/styles/codeSyntax.css'
+} from '../Select'
+import { prettyLanguageName, SupportedLanguage } from '../../types'
+import '../../styles/codeSyntax.css'
import { motion } from 'motion/react'
-import { cn } from '@/lib/utils'
+import { cn } from '../../lib/utils'
import { AnimatePresence } from 'motion/react'
-import { Icon } from '@/components/Icon'
-import { Skeleton } from '@/components/Skeleton'
+import { Icon } from '../Icon'
+import { Skeleton } from '../Skeleton'
import {
highlightCode,
HighlightedCode,
LIGHT_THEME,
DARK_THEME,
-} from '@/lib/codeUtils'
+} from '../../lib/codeUtils'
import React from 'react'
import { Pre } from '../CodeHighlight/Pre'
-import { useConfig } from '@/hooks/useConfig'
+import { useConfig } from '../../hooks/useConfig'
const copyIconVariants = {
hidden: { opacity: 0, scale: 0.5 },
diff --git a/src/components/CodeSnippet/index.tsx b/src/components/CodeSnippet/index.tsx
index 8dcad090..cf620ca2 100644
--- a/src/components/CodeSnippet/index.tsx
+++ b/src/components/CodeSnippet/index.tsx
@@ -1,8 +1,8 @@
import { useCallback, useState, useEffect, useRef } from 'react'
-import { cn } from '@/lib/utils'
-import { ProgrammingLanguage, Size } from '@/types'
+import { cn } from '../../lib/utils'
+import { ProgrammingLanguage, Size } from '../../types'
import { AnimatePresence, motion } from 'motion/react'
-import '@/styles/codeSyntax.css'
+import '../../styles/codeSyntax.css'
import './codeSnippet.css'
import { Icon } from '../Icon'
import {
@@ -10,8 +10,8 @@ import {
HighlightedCode,
LIGHT_THEME,
DARK_THEME,
-} from '@/lib/codeUtils'
-import { useConfig } from '@/hooks/useConfig'
+} from '../../lib/codeUtils'
+import { useConfig } from '../../hooks/useConfig'
import { Pre } from '../CodeHighlight/Pre'
export interface CodeSnippetProps {
diff --git a/src/components/Combobox/index.tsx b/src/components/Combobox/index.tsx
index 3fca9cea..f18be2b6 100644
--- a/src/components/Combobox/index.tsx
+++ b/src/components/Combobox/index.tsx
@@ -1,16 +1,16 @@
import * as React from 'react'
import { Virtuoso } from 'react-virtuoso'
-import { cn } from '@/lib/utils'
-import { Button } from '@/components/Button'
+import { cn } from '../../lib/utils'
+import { Button } from '../Button'
import {
Command,
CommandGroup,
CommandInput,
CommandItem,
CommandList,
-} from '@/components/Command'
-import { Popover, PopoverContent, PopoverTrigger } from '@/components/Popover'
-import { ButtonProps } from '@/components/Button'
+} from '../Command'
+import { Popover, PopoverContent, PopoverTrigger } from '../Popover'
+import { ButtonProps } from '../Button'
import { Icon } from '../Icon'
// I don't like that these aren't based on REM but I'm not sure how to fix it right now
diff --git a/src/components/Command/index.tsx b/src/components/Command/index.tsx
index f8c6670f..be257403 100644
--- a/src/components/Command/index.tsx
+++ b/src/components/Command/index.tsx
@@ -2,8 +2,8 @@
import * as React from 'react'
import { Command as CommandPrimitive } from 'cmdk'
-import { cn } from '@/lib/utils'
-import { Icon } from '@/components/Icon'
+import { cn } from '../../lib/utils'
+import { Icon } from '../Icon'
import { DialogContent } from '@radix-ui/react-dialog'
import { DialogProps } from '@radix-ui/react-dialog'
import { Dialog } from '../Dialog'
diff --git a/src/components/Container/index.stories.tsx b/src/components/Container/index.stories.tsx
index 3b830e4d..1ee1c08f 100644
--- a/src/components/Container/index.stories.tsx
+++ b/src/components/Container/index.stories.tsx
@@ -1,6 +1,6 @@
import { Container } from '.'
import { StoryObj, Meta } from '@storybook/react-vite'
-import { Card, Grid } from '@/index'
+import { Card, Grid } from '../../index'
const meta: Meta = {
component: Container,
diff --git a/src/components/Container/index.tsx b/src/components/Container/index.tsx
index e0c1e7cb..5ff51c32 100644
--- a/src/components/Container/index.tsx
+++ b/src/components/Container/index.tsx
@@ -1,6 +1,6 @@
-import { paddingMapper } from '@/lib/responsiveMappers'
-import { cn, getResponsiveClasses } from '@/lib/utils'
-import { Padding, ResponsiveValue } from '@/types'
+import { paddingMapper } from '../../lib/responsiveMappers'
+import { cn, getResponsiveClasses } from '../../lib/utils'
+import { Padding, ResponsiveValue } from '../../types'
import { ReactNode } from 'react'
export interface ContainerProps {
diff --git a/src/components/ContextDropdown/index.stories.tsx b/src/components/ContextDropdown/index.stories.tsx
index 1f7feaa0..e5bbbe67 100644
--- a/src/components/ContextDropdown/index.stories.tsx
+++ b/src/components/ContextDropdown/index.stories.tsx
@@ -3,9 +3,9 @@ import { ContextDropdown } from '.'
import { useModal } from '../../hooks/useModal'
import { Button } from '../Button'
import { Popover, PopoverContent, PopoverTrigger } from '../Popover'
-import { ModalProvider } from '@/context/ModalContext'
+import { ModalProvider } from '../../context/ModalContext'
import { faker } from '@faker-js/faker'
-import { cn } from '@/lib/utils'
+import { cn } from '../../lib/utils'
import { Heading } from '../Heading'
import { Text } from '../Text'
diff --git a/src/components/ContextDropdown/index.tsx b/src/components/ContextDropdown/index.tsx
index 78af8977..9e3f9cb3 100644
--- a/src/components/ContextDropdown/index.tsx
+++ b/src/components/ContextDropdown/index.tsx
@@ -3,11 +3,11 @@
import { useEffect } from 'react'
import { motion, AnimatePresence } from 'motion/react'
import { Icon } from '../Icon'
-import { assert } from '@/lib/typeUtils'
+import { assert } from '../../lib/typeUtils'
import { Heading } from '../Heading'
import React from 'react'
-import { useModal } from '@/hooks/useModal'
-import { Screen } from '@/context/ModalContext'
+import { useModal } from '../../hooks/useModal'
+import { Screen } from '../../context/ModalContext'
const MotionHeading = motion.create(Heading)
diff --git a/src/components/Dialog/index.tsx b/src/components/Dialog/index.tsx
index 13013468..a08203d5 100644
--- a/src/components/Dialog/index.tsx
+++ b/src/components/Dialog/index.tsx
@@ -4,7 +4,7 @@ import * as React from 'react'
import * as DialogPrimitive from '@radix-ui/react-dialog'
import { X } from 'lucide-react'
-import { cn } from '@/lib/utils'
+import { cn } from '../../lib/utils'
const DialogTrigger = DialogPrimitive.Trigger
diff --git a/src/components/DragNDrop/index.stories.tsx b/src/components/DragNDrop/index.stories.tsx
index 7e921aa2..07ecf0d0 100644
--- a/src/components/DragNDrop/index.stories.tsx
+++ b/src/components/DragNDrop/index.stories.tsx
@@ -4,7 +4,7 @@ import { DragNDropArea } from './DragNDropArea'
import { Droppable } from './Droppable'
import { Meta, StoryObj } from '@storybook/react-vite'
import { DragEndEvent } from '@dnd-kit/core'
-import { cn } from '@/lib/utils'
+import { cn } from '../../lib/utils'
const meta: Meta = {
component: Droppable,
diff --git a/src/components/Dropdown/index.tsx b/src/components/Dropdown/index.tsx
index 8baee272..8dee7240 100644
--- a/src/components/Dropdown/index.tsx
+++ b/src/components/Dropdown/index.tsx
@@ -4,7 +4,7 @@ import * as React from 'react'
import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu'
import { Check, ChevronRight, Circle } from 'lucide-react'
-import { cn } from '@/lib/utils'
+import { cn } from '../../lib/utils'
const DropdownMenu = DropdownMenuPrimitive.Root
diff --git a/src/components/ExternalPill/index.tsx b/src/components/ExternalPill/index.tsx
index 64ad25d1..940bd5b7 100644
--- a/src/components/ExternalPill/index.tsx
+++ b/src/components/ExternalPill/index.tsx
@@ -1,7 +1,7 @@
// TODO: https://linear.app/speakeasy/issue/SXF-173/external-pill-component
import React, { useState, useEffect } from 'react'
import { Icon as FallbackIcon } from '../Icon'
-import { cn } from '@/lib/utils'
+import { cn } from '../../lib/utils'
type AllExternalIcons =
| 'github'
diff --git a/src/components/Facepile/index.stories.tsx b/src/components/Facepile/index.stories.tsx
index 6f919070..524b2272 100644
--- a/src/components/Facepile/index.stories.tsx
+++ b/src/components/Facepile/index.stories.tsx
@@ -1,6 +1,6 @@
import { Meta, StoryObj } from '@storybook/react-vite'
import { Facepile } from '.'
-import { sizes } from '@/types'
+import { sizes } from '../../types'
const meta: Meta = {
component: Facepile,
diff --git a/src/components/Facepile/index.tsx b/src/components/Facepile/index.tsx
index b6236e1d..92e3fecb 100644
--- a/src/components/Facepile/index.tsx
+++ b/src/components/Facepile/index.tsx
@@ -1,14 +1,11 @@
import React, { useState, useRef, useEffect } from 'react'
import { motion, AnimatePresence } from 'motion/react'
-import { ResponsiveValue, Size } from '@/types'
-import { UserAvatar, UserAvatarProps } from '@/components/UserAvatar'
-import {
- userAvatarSizeMap,
- userAvatarSizeMapper,
-} from '@/components/UserAvatar/sizeMap'
-import { cn, getResponsiveClasses } from '@/lib/utils'
-import useTailwindBreakpoint from '@/hooks/useTailwindBreakpoint'
-import { resolveSizeForBreakpoint } from '@/lib/responsiveUtils'
+import { ResponsiveValue, Size } from '../../types'
+import { UserAvatar, UserAvatarProps } from '../UserAvatar'
+import { userAvatarSizeMap, userAvatarSizeMapper } from '../UserAvatar/sizeMap'
+import { cn, getResponsiveClasses } from '../../lib/utils'
+import useTailwindBreakpoint from '../../hooks/useTailwindBreakpoint'
+import { resolveSizeForBreakpoint } from '../../lib/responsiveUtils'
type FacepileVariant = 'interactive' | 'static'
type AvatarProps = Omit & { href?: string }
diff --git a/src/components/GradientCircle/index.tsx b/src/components/GradientCircle/index.tsx
index b8f7f44a..51e852e5 100644
--- a/src/components/GradientCircle/index.tsx
+++ b/src/components/GradientCircle/index.tsx
@@ -1,5 +1,5 @@
-import { cn } from '@/lib/utils'
-import { Size } from '@/types'
+import { cn } from '../../lib/utils'
+import { Size } from '../../types'
import './gradientCircle.css'
import { useMemo } from 'react'
diff --git a/src/components/Grid/index.stories.tsx b/src/components/Grid/index.stories.tsx
index 42e89dae..7f918fbd 100644
--- a/src/components/Grid/index.stories.tsx
+++ b/src/components/Grid/index.stories.tsx
@@ -1,7 +1,7 @@
import type { Meta, StoryObj } from '@storybook/react-vite'
import { Grid } from '.'
-import { createSampleGridChildren } from '@/lib/storybookUtils'
+import { createSampleGridChildren } from '../../lib/storybookUtils'
const meta: Meta = {
component: Grid,
diff --git a/src/components/Grid/index.tsx b/src/components/Grid/index.tsx
index a5ec4ec3..0de8cdbb 100644
--- a/src/components/Grid/index.tsx
+++ b/src/components/Grid/index.tsx
@@ -2,9 +2,9 @@ import {
colSpanMapper,
gapMapper,
paddingMapper,
-} from '@/lib/responsiveMappers'
-import { cn, getResponsiveClasses } from '@/lib/utils'
-import { Columns, Gap, Padding, ResponsiveValue } from '@/types'
+} from '../../lib/responsiveMappers'
+import { cn, getResponsiveClasses } from '../../lib/utils'
+import { Columns, Gap, Padding, ResponsiveValue } from '../../types'
import { isValidElement, ReactElement } from 'react'
export interface GridProps {
diff --git a/src/components/HighlightedText/index.tsx b/src/components/HighlightedText/index.tsx
index e16376be..fe3635e0 100644
--- a/src/components/HighlightedText/index.tsx
+++ b/src/components/HighlightedText/index.tsx
@@ -1,4 +1,4 @@
-import { cn } from '@/lib/utils'
+import { cn } from '../../lib/utils'
import { motion, useInView } from 'motion/react'
import { useEffect, useMemo, useRef, useState } from 'react'
diff --git a/src/components/Icon/customIcons/createCustomLucideIcon.ts b/src/components/Icon/customIcons/createCustomLucideIcon.ts
index 172370b9..01ab1a27 100644
--- a/src/components/Icon/customIcons/createCustomLucideIcon.ts
+++ b/src/components/Icon/customIcons/createCustomLucideIcon.ts
@@ -1,4 +1,4 @@
-import { cn, toKebabCase } from '@/lib/utils'
+import { cn, toKebabCase } from '../../../lib/utils'
import { Icon, IconNode, LucideProps } from 'lucide-react'
import { createElement, forwardRef } from 'react'
diff --git a/src/components/Icon/index.stories.tsx b/src/components/Icon/index.stories.tsx
index 0a838e0f..a6b39b52 100644
--- a/src/components/Icon/index.stories.tsx
+++ b/src/components/Icon/index.stories.tsx
@@ -1,7 +1,7 @@
import { StoryObj, Meta } from '@storybook/react-vite'
import { Icon } from '.'
import { customIconNames, iconNames } from './names'
-import { sizes } from '@/types'
+import { sizes } from '../../types'
type Story = StoryObj
diff --git a/src/components/Icon/index.tsx b/src/components/Icon/index.tsx
index b0bbbe20..fb714c77 100644
--- a/src/components/Icon/index.tsx
+++ b/src/components/Icon/index.tsx
@@ -3,9 +3,9 @@
import { lazy, Suspense } from 'react'
import { LucideProps } from 'lucide-react'
import dynamicIconImports from 'lucide-react/dynamicIconImports'
-import { ResponsiveValue, Size } from '@/types'
-import useTailwindBreakpoint from '@/hooks/useTailwindBreakpoint'
-import { resolveSizeForBreakpoint } from '@/lib/responsiveUtils'
+import { ResponsiveValue, Size } from '../../types'
+import useTailwindBreakpoint from '../../hooks/useTailwindBreakpoint'
+import { resolveSizeForBreakpoint } from '../../lib/responsiveUtils'
import customDynamicIconImports from './customIcons'
import { IconName } from './names'
diff --git a/src/components/IconButton/index.tsx b/src/components/IconButton/index.tsx
index 3f8e0b25..bd2e251b 100644
--- a/src/components/IconButton/index.tsx
+++ b/src/components/IconButton/index.tsx
@@ -1,7 +1,7 @@
import * as React from 'react'
import { Button, ButtonIcon } from '../Button'
-import { ButtonVariant, ButtonSize, ButtonContext } from '@/types'
-import { cn } from '@/lib/utils'
+import { ButtonVariant, ButtonSize, ButtonContext } from '../../types'
+import { cn } from '../../lib/utils'
type Attributes = Pick<
React.ButtonHTMLAttributes,
diff --git a/src/components/Input/index.tsx b/src/components/Input/index.tsx
index a8bb7903..e332137d 100644
--- a/src/components/Input/index.tsx
+++ b/src/components/Input/index.tsx
@@ -1,5 +1,5 @@
// TODO: https://linear.app/speakeasy/issue/SXF-171/input-component
-import { cn } from '@/lib/utils'
+import { cn } from '../../lib/utils'
import { Icon } from '../Icon'
import { IconName } from '../Icon/names'
import { useCallback, useState } from 'react'
diff --git a/src/components/KeyHint/index.tsx b/src/components/KeyHint/index.tsx
index 451407f4..b5bdaaae 100644
--- a/src/components/KeyHint/index.tsx
+++ b/src/components/KeyHint/index.tsx
@@ -1,5 +1,5 @@
-import { cn } from '@/lib/utils'
-import { Icon } from '@/components/Icon'
+import { cn } from '../../lib/utils'
+import { Icon } from '../Icon'
type Modifier = 'shift' | 'ctrlorcommand' | 'alt' | 'meta' | 'esc'
diff --git a/src/components/LanguageIndicator/index.stories.tsx b/src/components/LanguageIndicator/index.stories.tsx
index 7a5f3c38..381c0195 100644
--- a/src/components/LanguageIndicator/index.stories.tsx
+++ b/src/components/LanguageIndicator/index.stories.tsx
@@ -1,4 +1,4 @@
-import { supportedLanguages } from '@/types'
+import { supportedLanguages } from '../../types'
import { LanguageIndicator } from '.'
import { StoryObj, Meta } from '@storybook/react-vite'
diff --git a/src/components/LanguageIndicator/index.tsx b/src/components/LanguageIndicator/index.tsx
index ecc1d6e9..115190bc 100644
--- a/src/components/LanguageIndicator/index.tsx
+++ b/src/components/LanguageIndicator/index.tsx
@@ -1,6 +1,6 @@
// TODO: https://linear.app/speakeasy/issue/SXF-172/language-indicator-component
-import { cn } from '@/lib/utils'
-import { SupportedLanguage } from '@/types'
+import { cn } from '../../lib/utils'
+import { SupportedLanguage } from '../../types'
export interface LanguageIndicatorProps {
language: SupportedLanguage
diff --git a/src/components/Link/index.tsx b/src/components/Link/index.tsx
index 0c901574..0dd6134b 100644
--- a/src/components/Link/index.tsx
+++ b/src/components/Link/index.tsx
@@ -1,5 +1,5 @@
import React, { forwardRef, ReactNode } from 'react'
-import { cn } from '@/lib/utils'
+import { cn } from '../../lib/utils'
import { cva } from 'class-variance-authority'
import { Slot, Slottable } from '@radix-ui/react-slot'
import { IconName } from '../Icon/names'
diff --git a/src/components/LoggedInUserMenu/index.tsx b/src/components/LoggedInUserMenu/index.tsx
index 5c3e6cca..4c945035 100644
--- a/src/components/LoggedInUserMenu/index.tsx
+++ b/src/components/LoggedInUserMenu/index.tsx
@@ -10,7 +10,7 @@ import { Stack } from '../Stack'
import { UserAvatar } from '../UserAvatar'
import { UserAvatarProps } from '../UserAvatar'
import React, { Children, Fragment, ReactNode } from 'react'
-import { cn } from '@/lib/utils'
+import { cn } from '../../lib/utils'
export interface LoggedInUserProps extends UserAvatarProps {
email: string
diff --git a/src/components/Logo/Animated.tsx b/src/components/Logo/Animated.tsx
index 1f49bc42..5934bf45 100644
--- a/src/components/Logo/Animated.tsx
+++ b/src/components/Logo/Animated.tsx
@@ -1,5 +1,5 @@
-import { useTheme } from '@/hooks/useTheme'
-import { cn } from '@/lib/utils'
+import { useTheme } from '../../hooks/useTheme'
+import { cn } from '../../lib/utils'
import {
Fit,
Layout,
@@ -8,9 +8,7 @@ import {
} from '@rive-app/react-canvas-lite'
import { cva } from 'class-variance-authority'
import { FC, useEffect, useState } from 'react'
-
-// read rive file from local directory into arraybuffer
-const riveFile = await import('./speakeasy-logo.riv')
+import riveFileUrl from './speakeasy-logo.riv'
const stackLogoClass = cva('relative', {
variants: {
@@ -54,7 +52,7 @@ export const AnimatedLogo = ({
const theme = useTheme()
const [stateMachine, setStateMachine] = useState('loop-dark')
const { rive, RiveComponent } = useRive({
- src: riveFile.default,
+ src: riveFileUrl,
stateMachines: stateMachine,
autoplay: true,
layout: new Layout({
diff --git a/src/components/Logo/svgs/index.tsx b/src/components/Logo/svgs/index.tsx
index f6a09fac..bc98e78e 100644
--- a/src/components/Logo/svgs/index.tsx
+++ b/src/components/Logo/svgs/index.tsx
@@ -1,4 +1,4 @@
-import { cn } from '@/lib/utils'
+import { cn } from '../../../lib/utils'
interface SvgProps extends React.SVGProps {
muted?: boolean
diff --git a/src/components/Modal/index.stories.tsx b/src/components/Modal/index.stories.tsx
index b421371a..ded0bcc8 100644
--- a/src/components/Modal/index.stories.tsx
+++ b/src/components/Modal/index.stories.tsx
@@ -1,10 +1,10 @@
import { Meta, StoryObj } from '@storybook/react-vite'
import { Modal } from '.'
-import { ModalProvider, Screen } from '@/context/ModalContext'
-import { useModal } from '@/hooks/useModal'
+import { ModalProvider, Screen } from '../../context/ModalContext'
+import { useModal } from '../../hooks/useModal'
import { memo, useEffect } from 'react'
import { faker } from '@faker-js/faker'
-import { Button, Icon } from '@/index'
+import { Button, Icon } from '../../index'
faker.seed(123)
diff --git a/src/components/Modal/index.tsx b/src/components/Modal/index.tsx
index b62026a6..0c27f4fb 100644
--- a/src/components/Modal/index.tsx
+++ b/src/components/Modal/index.tsx
@@ -7,11 +7,11 @@ import {
DialogPortal,
DialogTitle,
} from '@radix-ui/react-dialog'
-import { useModal } from '@/hooks/useModal'
-import { cn } from '@/lib/utils'
-import { IconButton } from '@/components/IconButton'
+import { useModal } from '../../hooks/useModal'
+import { cn } from '../../lib/utils'
+import { IconButton } from '../IconButton'
import { Icon } from '../Icon'
-import { Screen } from '@/context/ModalContext'
+import { Screen } from '../../context/ModalContext'
export interface ModalProps {
closable?: boolean
diff --git a/src/components/PageHeader/index.tsx b/src/components/PageHeader/index.tsx
index a0840748..93f3f5d4 100644
--- a/src/components/PageHeader/index.tsx
+++ b/src/components/PageHeader/index.tsx
@@ -3,8 +3,8 @@ import { Heading } from '../Heading'
import { Separator } from '../Separator'
import styles from './styles.module.css'
-import { cn } from '@/lib/utils'
-import useTailwindBreakpoint from '@/hooks/useTailwindBreakpoint'
+import { cn } from '../../lib/utils'
+import useTailwindBreakpoint from '../../hooks/useTailwindBreakpoint'
import { Link, LinkProps } from '../Link'
export interface PageHeaderProps extends PropsWithChildren {
diff --git a/src/components/Popover/index.tsx b/src/components/Popover/index.tsx
index 2a708350..d69177a0 100644
--- a/src/components/Popover/index.tsx
+++ b/src/components/Popover/index.tsx
@@ -3,7 +3,7 @@
import * as React from 'react'
import * as PopoverPrimitive from '@radix-ui/react-popover'
-import { cn } from '@/lib/utils'
+import { cn } from '../../lib/utils'
const Popover = PopoverPrimitive.Root
diff --git a/src/components/PromptInput/index.stories.tsx b/src/components/PromptInput/index.stories.tsx
index 49ff541c..86ce0359 100644
--- a/src/components/PromptInput/index.stories.tsx
+++ b/src/components/PromptInput/index.stories.tsx
@@ -1,4 +1,4 @@
-import { Attachment, PromptInput, Suggestion } from '@/components/PromptInput'
+import { Attachment, PromptInput, Suggestion } from '../PromptInput'
import { Meta, StoryObj } from '@storybook/react-vite'
import { fn } from 'storybook/test'
import { useState, useCallback, useRef } from 'react'
diff --git a/src/components/PromptInput/index.tsx b/src/components/PromptInput/index.tsx
index 082a022d..50718bca 100644
--- a/src/components/PromptInput/index.tsx
+++ b/src/components/PromptInput/index.tsx
@@ -1,4 +1,4 @@
-import { cn } from '@/lib/utils'
+import { cn } from '../../lib/utils'
import { Icon } from '../Icon'
import { AnimatePresence, motion } from 'motion/react'
import { IconName } from '../Icon/names'
diff --git a/src/components/PullRequestLink/index.tsx b/src/components/PullRequestLink/index.tsx
index 3c8391a1..bba201f9 100644
--- a/src/components/PullRequestLink/index.tsx
+++ b/src/components/PullRequestLink/index.tsx
@@ -1,6 +1,6 @@
// TODO: https://linear.app/speakeasy/issue/SXF-174/pull-request-link-component
-import { assertNever } from '@/lib/assert'
-import { cn } from '@/lib/utils'
+import { assertNever } from '../../lib/assert'
+import { cn } from '../../lib/utils'
import { GitPullRequest, GitPullRequestClosed, Merge } from 'lucide-react'
type Status = 'open' | 'closed' | 'merged'
diff --git a/src/components/ResizablePanel/index.stories.tsx b/src/components/ResizablePanel/index.stories.tsx
index 237a5030..b78a1a4c 100644
--- a/src/components/ResizablePanel/index.stories.tsx
+++ b/src/components/ResizablePanel/index.stories.tsx
@@ -2,7 +2,7 @@ import { faker } from '@faker-js/faker'
import { ResizablePanel } from '.'
import { StoryObj, Meta } from '@storybook/react-vite'
import { useState } from 'react'
-import { cn } from '@/lib/utils'
+import { cn } from '../../lib/utils'
const meta: Meta = {
component: ResizablePanel,
diff --git a/src/components/ResizablePanel/index.tsx b/src/components/ResizablePanel/index.tsx
index e49c48d5..dd2fff2f 100644
--- a/src/components/ResizablePanel/index.tsx
+++ b/src/components/ResizablePanel/index.tsx
@@ -1,5 +1,5 @@
-import { Icon } from '@/components/Icon'
-import { cn } from '@/lib/utils'
+import { Icon } from '../Icon'
+import { cn } from '../../lib/utils'
import React, { Children, isValidElement, useMemo, useState } from 'react'
import { ComponentProps, ReactNode } from 'react'
import {
diff --git a/src/components/Score/index.tsx b/src/components/Score/index.tsx
index aedf5e1b..dbec0524 100644
--- a/src/components/Score/index.tsx
+++ b/src/components/Score/index.tsx
@@ -1,8 +1,8 @@
-import { Size } from '@/types'
-import type { Range } from '@/lib/typeUtils'
+import { Size } from '../../types'
+import type { Range } from '../../lib/typeUtils'
import { useEffect, useMemo, useState, type CSSProperties } from 'react'
import styles from './index.module.css'
-import { cn } from '@/lib/utils'
+import { cn } from '../../lib/utils'
export type ScoreValue = Range<100>
diff --git a/src/components/ScrollArea/index.tsx b/src/components/ScrollArea/index.tsx
index 51cbc23b..af3f275d 100644
--- a/src/components/ScrollArea/index.tsx
+++ b/src/components/ScrollArea/index.tsx
@@ -3,7 +3,7 @@
import * as React from 'react'
import * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area'
-import { cn } from '@/lib/utils'
+import { cn } from '../../lib/utils'
const ScrollArea = React.forwardRef<
React.ElementRef,
diff --git a/src/components/SegmentedButton/index.tsx b/src/components/SegmentedButton/index.tsx
index 9758bbd1..544b6f07 100644
--- a/src/components/SegmentedButton/index.tsx
+++ b/src/components/SegmentedButton/index.tsx
@@ -1,4 +1,4 @@
-import { cn } from '@/lib/utils'
+import { cn } from '../../lib/utils'
import { motion, MotionProps } from 'motion/react'
import React, { useMemo } from 'react'
import styles from './index.module.css'
diff --git a/src/components/Select/index.tsx b/src/components/Select/index.tsx
index 9bdd921f..01a9439e 100644
--- a/src/components/Select/index.tsx
+++ b/src/components/Select/index.tsx
@@ -4,7 +4,7 @@ import * as React from 'react'
import * as SelectPrimitive from '@radix-ui/react-select'
import { Check, ChevronDown, ChevronUp } from 'lucide-react'
-import { cn } from '@/lib/utils'
+import { cn } from '../../lib/utils'
const Select = SelectPrimitive.Root
diff --git a/src/components/Separator/index.tsx b/src/components/Separator/index.tsx
index 6e05ef08..f4e72b71 100644
--- a/src/components/Separator/index.tsx
+++ b/src/components/Separator/index.tsx
@@ -1,5 +1,5 @@
-import { cn } from '@/lib/utils'
-import { Orientation } from '@/types'
+import { cn } from '../../lib/utils'
+import { Orientation } from '../../types'
export interface SeparatorProps {
orientation?: Orientation
diff --git a/src/components/Skeleton/index.tsx b/src/components/Skeleton/index.tsx
index a2d94ea9..61fe4d60 100644
--- a/src/components/Skeleton/index.tsx
+++ b/src/components/Skeleton/index.tsx
@@ -1,5 +1,5 @@
import { Children, cloneElement, isValidElement } from 'react'
-import { cn } from '@/lib/utils'
+import { cn } from '../../lib/utils'
import './skeleton.css'
export interface SkeletonProps {
diff --git a/src/components/Stack/index.stories.tsx b/src/components/Stack/index.stories.tsx
index bcbe0db1..6f47a92c 100644
--- a/src/components/Stack/index.stories.tsx
+++ b/src/components/Stack/index.stories.tsx
@@ -1,7 +1,7 @@
import type { Meta, StoryObj } from '@storybook/react-vite'
import { Stack } from '.'
-import { createSampleChildren } from '@/lib/storybookUtils'
-import { cn } from '@/lib/utils'
+import { createSampleChildren } from '../../lib/storybookUtils'
+import { cn } from '../../lib/utils'
const meta: Meta = {
component: Stack,
diff --git a/src/components/Stack/index.tsx b/src/components/Stack/index.tsx
index 5f071cb9..4ad7e50b 100644
--- a/src/components/Stack/index.tsx
+++ b/src/components/Stack/index.tsx
@@ -1,7 +1,11 @@
import React from 'react'
-import { cn, getResponsiveClasses } from '@/lib/utils'
-import { Gap, Padding, ResponsiveValue } from '@/types'
-import { gapMapper, paddingMapper, wrapMapper } from '@/lib/responsiveMappers'
+import { cn, getResponsiveClasses } from '../../lib/utils'
+import { Gap, Padding, ResponsiveValue } from '../../types'
+import {
+ gapMapper,
+ paddingMapper,
+ wrapMapper,
+} from '../../lib/responsiveMappers'
type StackDirection = 'horizontal' | 'vertical'
type StackAlign = 'stretch' | 'start' | 'center' | 'end' | 'baseline'
diff --git a/src/components/Subnav/index.tsx b/src/components/Subnav/index.tsx
index 266d5a4b..e9eeae88 100644
--- a/src/components/Subnav/index.tsx
+++ b/src/components/Subnav/index.tsx
@@ -1,4 +1,4 @@
-import { cn } from '@/lib/utils'
+import { cn } from '../../lib/utils'
import { motion, Transition, AnimatePresence } from 'motion/react'
import {
useState,
diff --git a/src/components/Switch/index.stories.tsx b/src/components/Switch/index.stories.tsx
index 6c3e9eb5..39ec7ac7 100644
--- a/src/components/Switch/index.stories.tsx
+++ b/src/components/Switch/index.stories.tsx
@@ -1,6 +1,6 @@
import { StoryObj, Meta } from '@storybook/react-vite'
-import { Switch } from '@/components/Switch'
+import { Switch } from '../Switch'
const meta: Meta = {
title: 'Components/Switch',
diff --git a/src/components/Switch/index.tsx b/src/components/Switch/index.tsx
index ebf92f80..b69a638d 100644
--- a/src/components/Switch/index.tsx
+++ b/src/components/Switch/index.tsx
@@ -3,7 +3,7 @@
import * as React from 'react'
import * as SwitchPrimitives from '@radix-ui/react-switch'
-import { cn } from '@/lib/utils'
+import { cn } from '../../lib/utils'
const Switch = React.forwardRef<
React.ElementRef,
diff --git a/src/components/Table/index.stories.tsx b/src/components/Table/index.stories.tsx
index 6c3be9e2..4a29fe6b 100644
--- a/src/components/Table/index.stories.tsx
+++ b/src/components/Table/index.stories.tsx
@@ -2,7 +2,7 @@ import type { Meta, StoryObj } from '@storybook/react-vite'
import { Column, Group, Table, TableProps } from '.'
import { faker } from '@faker-js/faker'
import { useState } from 'react'
-import { SupportedLanguage, supportedLanguages } from '@/types'
+import { SupportedLanguage, supportedLanguages } from '../../types'
import { TargetLanguageIcon } from '../TargetLanguageIcon'
import { formatDistance } from 'date-fns'
import { Icon } from '../Icon'
diff --git a/src/components/Table/index.tsx b/src/components/Table/index.tsx
index 17295a2f..33e78dbb 100644
--- a/src/components/Table/index.tsx
+++ b/src/components/Table/index.tsx
@@ -8,18 +8,18 @@ import React, {
useRef,
useState,
} from 'react'
-import { cn } from '@/lib/utils'
+import { cn } from '../../lib/utils'
import { Loader2 } from 'lucide-react'
-import { isGroupOf } from '@/lib/typeUtils'
+import { isGroupOf } from '../../lib/typeUtils'
import styles from './styles.module.css'
import {
Tooltip,
TooltipContent,
TooltipProvider,
TooltipTrigger,
-} from '@/components/Tooltip'
-import { Button } from '@/components/Button'
-import { ExpandChevron } from '@/components/__beta__/CLIWizard'
+} from '../Tooltip'
+import { Button } from '../Button'
+import { ExpandChevron } from '../__beta__/CLIWizard'
import { TableProvider } from './context/tableProvider'
import { useTable } from './context/context'
diff --git a/src/components/Tabs/index.tsx b/src/components/Tabs/index.tsx
index fb64f525..b4094d84 100644
--- a/src/components/Tabs/index.tsx
+++ b/src/components/Tabs/index.tsx
@@ -1,4 +1,4 @@
-import { cn } from '@/lib/utils'
+import { cn } from '../../lib/utils'
import React, { ReactElement, useEffect, useState } from 'react'
export interface TabProps {
diff --git a/src/components/TargetLanguageIcon/index.stories.tsx b/src/components/TargetLanguageIcon/index.stories.tsx
index ddade813..27c18278 100644
--- a/src/components/TargetLanguageIcon/index.stories.tsx
+++ b/src/components/TargetLanguageIcon/index.stories.tsx
@@ -1,6 +1,6 @@
import type { Meta, StoryObj } from '@storybook/react-vite'
import { TargetLanguageIcon } from './index'
-import { sizes, supportedLanguages } from '@/types'
+import { sizes, supportedLanguages } from '../../types'
const meta: Meta = {
title: 'Components/TargetLanguageIcon',
diff --git a/src/components/TargetLanguageIcon/index.tsx b/src/components/TargetLanguageIcon/index.tsx
index db4613de..2c7faab5 100644
--- a/src/components/TargetLanguageIcon/index.tsx
+++ b/src/components/TargetLanguageIcon/index.tsx
@@ -1,19 +1,19 @@
-import { Size } from '@/types'
-import { SupportedLanguage } from '@/types'
+import { Size } from '../../types'
+import { SupportedLanguage } from '../../types'
-import TypeScriptIcon from '@/assets/icons/languages/typescript.svg?react'
-import GoIcon from '@/assets/icons/languages/go.svg?react'
-import JavaIcon from '@/assets/icons/languages/java.svg?react'
-import PythonIcon from '@/assets/icons/languages/python.svg?react'
-import CSharpIcon from '@/assets/icons/languages/csharp.svg?react'
-import TerraformIcon from '@/assets/icons/languages/terraform.svg?react'
-import UnityIcon from '@/assets/icons/languages/unity.svg?react'
-import PhpIcon from '@/assets/icons/languages/php.svg?react'
-import SwiftIcon from '@/assets/icons/languages/swift.svg?react'
-import RubyIcon from '@/assets/icons/languages/ruby.svg?react'
-import PostmanIcon from '@/assets/icons/languages/postman.svg?react'
-import JSONIcon from '@/assets/icons/languages/json.svg?react'
-import { cn } from '@/lib/utils'
+import TypeScriptIcon from '../../assets/icons/languages/typescript.svg?react'
+import GoIcon from '../../assets/icons/languages/go.svg?react'
+import JavaIcon from '../../assets/icons/languages/java.svg?react'
+import PythonIcon from '../../assets/icons/languages/python.svg?react'
+import CSharpIcon from '../../assets/icons/languages/csharp.svg?react'
+import TerraformIcon from '../../assets/icons/languages/terraform.svg?react'
+import UnityIcon from '../../assets/icons/languages/unity.svg?react'
+import PhpIcon from '../../assets/icons/languages/php.svg?react'
+import SwiftIcon from '../../assets/icons/languages/swift.svg?react'
+import RubyIcon from '../../assets/icons/languages/ruby.svg?react'
+import PostmanIcon from '../../assets/icons/languages/postman.svg?react'
+import JSONIcon from '../../assets/icons/languages/json.svg?react'
+import { cn } from '../../lib/utils'
const sizeMap: Record = {
small: 32,
diff --git a/src/components/Text/index.tsx b/src/components/Text/index.tsx
index ca2cb066..dd3f3e09 100644
--- a/src/components/Text/index.tsx
+++ b/src/components/Text/index.tsx
@@ -1,4 +1,4 @@
-import { cn } from '@/lib/utils'
+import { cn } from '../../lib/utils'
import { ReactNode } from 'react'
export type TextVariant = 'lg' | 'md' | 'sm' | 'xs'
diff --git a/src/components/ThemeSwitcher/index.tsx b/src/components/ThemeSwitcher/index.tsx
index b3004788..8a089c2e 100644
--- a/src/components/ThemeSwitcher/index.tsx
+++ b/src/components/ThemeSwitcher/index.tsx
@@ -1,11 +1,11 @@
'use client'
import { ReactNode, useId, useMemo } from 'react'
-import { cn } from '@/lib/utils'
+import { cn } from '../../lib/utils'
import { Moon, Sun } from 'lucide-react'
-import { useIsMounted } from '@/hooks/useIsMounted'
-import { useConfig } from '@/hooks/useConfig'
-import { Theme } from '@/context/theme'
+import { useIsMounted } from '../../hooks/useIsMounted'
+import { useConfig } from '../../hooks/useConfig'
+import { Theme } from '../../context/theme'
import { motion } from 'motion/react'
const THEMES: { key: Theme; icon: ReactNode }[] = [
diff --git a/src/components/Timeline/index.tsx b/src/components/Timeline/index.tsx
index b30f9ded..e9d6f7a7 100644
--- a/src/components/Timeline/index.tsx
+++ b/src/components/Timeline/index.tsx
@@ -9,7 +9,7 @@ import React, {
Children,
} from 'react'
import type { ReactNode } from 'react'
-import { cn } from '@/lib/utils'
+import { cn } from '../../lib/utils'
import { Text } from '../Text'
import { Heading } from '../Heading'
diff --git a/src/components/Tooltip/index.tsx b/src/components/Tooltip/index.tsx
index 32654fed..e168e7e0 100644
--- a/src/components/Tooltip/index.tsx
+++ b/src/components/Tooltip/index.tsx
@@ -3,7 +3,7 @@
import * as React from 'react'
import * as TooltipPrimitive from '@radix-ui/react-tooltip'
-import { cn } from '@/lib/utils'
+import { cn } from '../../lib/utils'
const TooltipProvider = TooltipPrimitive.Provider
diff --git a/src/components/UserAvatar/index.stories.tsx b/src/components/UserAvatar/index.stories.tsx
index 9f573217..2213f393 100644
--- a/src/components/UserAvatar/index.stories.tsx
+++ b/src/components/UserAvatar/index.stories.tsx
@@ -1,4 +1,4 @@
-import { sizes } from '@/types'
+import { sizes } from '../../types'
import { UserAvatar } from '.'
import { Meta, StoryObj } from '@storybook/react-vite'
diff --git a/src/components/UserAvatar/index.tsx b/src/components/UserAvatar/index.tsx
index 3bf0262e..a48556ad 100644
--- a/src/components/UserAvatar/index.tsx
+++ b/src/components/UserAvatar/index.tsx
@@ -1,8 +1,8 @@
-import { cn, getResponsiveClasses } from '@/lib/utils'
-import { ResponsiveValue, Size } from '@/types'
+import { cn, getResponsiveClasses } from '../../lib/utils'
+import { ResponsiveValue, Size } from '../../types'
import { userAvatarSizeMap } from './sizeMap'
-import useTailwindBreakpoint from '@/hooks/useTailwindBreakpoint'
-import { resolveSizeForBreakpoint } from '@/lib/responsiveUtils'
+import useTailwindBreakpoint from '../../hooks/useTailwindBreakpoint'
+import { resolveSizeForBreakpoint } from '../../lib/responsiveUtils'
import { userAvatarSizeMapper } from './sizeMap'
export interface UserAvatarProps {
diff --git a/src/components/UserAvatar/sizeMap.ts b/src/components/UserAvatar/sizeMap.ts
index 6b340c1a..46c61464 100644
--- a/src/components/UserAvatar/sizeMap.ts
+++ b/src/components/UserAvatar/sizeMap.ts
@@ -1,4 +1,4 @@
-import { Size } from '@/types'
+import { Size } from '../../types'
export const userAvatarSizeMap: Record = {
small: 8,
diff --git a/src/components/Wizard/index.stories.tsx b/src/components/Wizard/index.stories.tsx
index 59387997..96a70042 100644
--- a/src/components/Wizard/index.stories.tsx
+++ b/src/components/Wizard/index.stories.tsx
@@ -2,7 +2,7 @@ import React from 'react'
import { Wizard } from '.'
import { type WizardStep } from './types'
import { StoryObj, Meta } from '@storybook/react-vite'
-import { Badge, Heading } from '@/index'
+import { Badge, Heading } from '../../index'
const meta: Meta = {
component: Wizard,
diff --git a/src/components/Wizard/index.tsx b/src/components/Wizard/index.tsx
index 567206c5..20243eed 100644
--- a/src/components/Wizard/index.tsx
+++ b/src/components/Wizard/index.tsx
@@ -1,6 +1,6 @@
import * as React from 'react'
-import { cn } from '@/lib/utils'
-import { CodeSnippet, Heading, Text } from '@/index'
+import { cn } from '../../lib/utils'
+import { CodeSnippet, Heading, Text } from '../../index'
import { useMemo } from 'react'
import { WizardStep } from './types'
diff --git a/src/components/Wizard/types.ts b/src/components/Wizard/types.ts
index 38a66058..78158ba1 100644
--- a/src/components/Wizard/types.ts
+++ b/src/components/Wizard/types.ts
@@ -1,4 +1,4 @@
-import { ProgrammingLanguage } from '@/types'
+import { ProgrammingLanguage } from '../../types'
export interface WizardCommand {
id: string
diff --git a/src/components/WorkspaceSelector/CreateOrg.tsx b/src/components/WorkspaceSelector/CreateOrg.tsx
index 088b60cf..46431b7e 100644
--- a/src/components/WorkspaceSelector/CreateOrg.tsx
+++ b/src/components/WorkspaceSelector/CreateOrg.tsx
@@ -6,7 +6,7 @@ import { GradientCircle } from '../GradientCircle'
import { Separator } from '../Separator'
import { Text } from '../Text'
import { Button } from '../Button'
-import { Heading } from '@/index'
+import { Heading } from '../../index'
interface CreateOrgProps {
onSubmit: (name: string) => Promise
diff --git a/src/components/WorkspaceSelector/CreateWorkspace.tsx b/src/components/WorkspaceSelector/CreateWorkspace.tsx
index b967f02e..4ebb7b23 100644
--- a/src/components/WorkspaceSelector/CreateWorkspace.tsx
+++ b/src/components/WorkspaceSelector/CreateWorkspace.tsx
@@ -3,11 +3,11 @@ import { Org } from '.'
import { Command } from '../Command'
import { Text } from '../Text'
import { Icon } from '../Icon'
-import { Button, Heading, Stack } from '@/index'
+import { Button, Heading, Stack } from '../../index'
import { Separator } from '../Separator'
import { GradientCircle } from '../GradientCircle'
-import { cn } from '@/lib/utils'
+import { cn } from '../../lib/utils'
import { OrgSelector } from './OrgSelector'
export interface CreateResult {
diff --git a/src/components/WorkspaceSelector/OrgList.tsx b/src/components/WorkspaceSelector/OrgList.tsx
index d3f89144..b7d39228 100644
--- a/src/components/WorkspaceSelector/OrgList.tsx
+++ b/src/components/WorkspaceSelector/OrgList.tsx
@@ -2,7 +2,7 @@ import { Org } from '.'
import { CommandItem } from '../Command'
import { GradientCircle } from '../GradientCircle'
import { Icon } from '../Icon'
-import { cn } from '@/lib/utils'
+import { cn } from '../../lib/utils'
import { ScrollingList } from './ScrollingList'
import { VirtuosoHandle } from 'react-virtuoso'
import { useEffect, useRef, useState } from 'react'
diff --git a/src/components/WorkspaceSelector/OrgSelector.tsx b/src/components/WorkspaceSelector/OrgSelector.tsx
index 6a8307b8..18d0cc90 100644
--- a/src/components/WorkspaceSelector/OrgSelector.tsx
+++ b/src/components/WorkspaceSelector/OrgSelector.tsx
@@ -1,16 +1,11 @@
import * as React from 'react'
-import {
- Command,
- CommandInput,
- CommandItem,
- CommandList,
-} from '@/components/Command'
-import { Popover, PopoverContent, PopoverTrigger } from '@/components/Popover'
+import { Command, CommandInput, CommandItem, CommandList } from '../Command'
+import { Popover, PopoverContent, PopoverTrigger } from '../Popover'
import { Org } from '.'
-import { Icon } from '@/components/Icon'
+import { Icon } from '../Icon'
import { Virtuoso, VirtuosoHandle } from 'react-virtuoso'
-import { cn } from '@/lib/utils'
+import { cn } from '../../lib/utils'
interface OrgSelectorProps {
orgs: Org[]
diff --git a/src/components/WorkspaceSelector/RecentWorkspaces.tsx b/src/components/WorkspaceSelector/RecentWorkspaces.tsx
index 238eca21..d83ba292 100644
--- a/src/components/WorkspaceSelector/RecentWorkspaces.tsx
+++ b/src/components/WorkspaceSelector/RecentWorkspaces.tsx
@@ -1,4 +1,4 @@
-import { cn } from '@/lib/utils'
+import { cn } from '../../lib/utils'
import { Org, Workspace } from '.'
import { WorkspaceItem } from './WorkspaceItem'
import { ScrollingList } from './ScrollingList'
diff --git a/src/components/WorkspaceSelector/WorkspaceItem.tsx b/src/components/WorkspaceSelector/WorkspaceItem.tsx
index dc6608d4..7be3f19b 100644
--- a/src/components/WorkspaceSelector/WorkspaceItem.tsx
+++ b/src/components/WorkspaceSelector/WorkspaceItem.tsx
@@ -1,4 +1,4 @@
-import { cn } from '@/lib/utils'
+import { cn } from '../../lib/utils'
import { CommandItem } from '../Command'
import { GradientCircle } from '../GradientCircle'
import { Org, Workspace } from '.'
diff --git a/src/components/WorkspaceSelector/WorkspaceList.tsx b/src/components/WorkspaceSelector/WorkspaceList.tsx
index 3d2bd2bf..69cab34f 100644
--- a/src/components/WorkspaceSelector/WorkspaceList.tsx
+++ b/src/components/WorkspaceSelector/WorkspaceList.tsx
@@ -1,7 +1,7 @@
import { CommandItem } from '../Command'
import { Icon } from '../Icon'
import { Org, Workspace } from '.'
-import { cn } from '@/lib/utils'
+import { cn } from '../../lib/utils'
import { WorkspaceItem } from './WorkspaceItem'
import { useEffect, useRef, useState } from 'react'
import { ScrollingList } from './ScrollingList'
diff --git a/src/components/WorkspaceSelector/index.stories.tsx b/src/components/WorkspaceSelector/index.stories.tsx
index 39f7e47a..e318fdc9 100644
--- a/src/components/WorkspaceSelector/index.stories.tsx
+++ b/src/components/WorkspaceSelector/index.stories.tsx
@@ -1,7 +1,7 @@
import { useState } from 'react'
import type { Meta, StoryObj } from '@storybook/react-vite'
import { Org, Workspace, WorkspaceSelector, WorkspaceSelectorProps } from '.'
-import { Container } from '@/index'
+import { Container } from '../../index'
import { CreateResult } from './CreateWorkspace'
import { expect, userEvent, within } from 'storybook/test'
import { faker } from '@faker-js/faker'
diff --git a/src/components/WorkspaceSelector/index.tsx b/src/components/WorkspaceSelector/index.tsx
index 212bc50a..d9967267 100644
--- a/src/components/WorkspaceSelector/index.tsx
+++ b/src/components/WorkspaceSelector/index.tsx
@@ -12,7 +12,7 @@ import { Logo } from '../Logo'
import { Stack } from '../Stack'
import { CreateOrg } from './CreateOrg'
import { Heading } from '../Heading'
-import { GlobalWorkspaceSelectorProps } from '@/types'
+import { GlobalWorkspaceSelectorProps } from '../../types'
export interface Org {
id: string
diff --git a/src/components/__beta__/CLIWizard/index.stories.tsx b/src/components/__beta__/CLIWizard/index.stories.tsx
index 92cff38f..6a3b0f7a 100644
--- a/src/components/__beta__/CLIWizard/index.stories.tsx
+++ b/src/components/__beta__/CLIWizard/index.stories.tsx
@@ -1,7 +1,7 @@
import type { Meta, StoryObj } from '@storybook/react-vite'
import CLIWizard from './index'
-import { Container } from '@/components/Container'
-import { WizardStep } from '@/components/Wizard/types'
+import { Container } from '../../Container/index'
+import { WizardStep } from '../../Wizard/types'
const steps: WizardStep[] = [
{
diff --git a/src/components/__beta__/CLIWizard/index.tsx b/src/components/__beta__/CLIWizard/index.tsx
index 08eea867..000c8467 100644
--- a/src/components/__beta__/CLIWizard/index.tsx
+++ b/src/components/__beta__/CLIWizard/index.tsx
@@ -3,12 +3,12 @@
import * as React from 'react'
import { Check, ChevronUp } from 'lucide-react'
import { AnimatePresence, motion } from 'motion/react'
-import { cn } from '@/lib/utils'
-import { Text } from '../../Text'
-import { Heading } from '../../Heading'
+import { cn } from '../../../lib/utils'
+import { Text } from '../../Text/index'
+import { Heading } from '../../Heading/index'
import { TerminalCommand } from './terminal-command'
import { Terminal } from './terminal'
-import { WizardStep } from '@/components/Wizard/types'
+import { WizardStep } from '../../Wizard/types'
/**
* TODO before moving out of beta:
diff --git a/src/components/__beta__/CLIWizard/terminal-command.tsx b/src/components/__beta__/CLIWizard/terminal-command.tsx
index dfa87bbd..7cbc02f3 100644
--- a/src/components/__beta__/CLIWizard/terminal-command.tsx
+++ b/src/components/__beta__/CLIWizard/terminal-command.tsx
@@ -10,7 +10,7 @@ import React from 'react'
import { Check, Copy } from 'lucide-react'
import { motion } from 'motion/react'
import { TerminalPrompt, TerminalOutput } from './terminal'
-import { cn } from '@/lib/utils'
+import { cn } from '../../../lib/utils'
interface TerminalCommandProps {
code: string
diff --git a/src/components/__beta__/CLIWizard/terminal.tsx b/src/components/__beta__/CLIWizard/terminal.tsx
index 788d2ea2..8c0860c9 100644
--- a/src/components/__beta__/CLIWizard/terminal.tsx
+++ b/src/components/__beta__/CLIWizard/terminal.tsx
@@ -9,7 +9,7 @@
import * as React from 'react'
import { TerminalIcon } from 'lucide-react'
-import { cn } from '@/lib/utils'
+import { cn } from '../../../lib/utils'
interface TerminalProps {
children: React.ReactNode
diff --git a/src/hooks/useAppLayout.ts b/src/hooks/useAppLayout.ts
index 5abe0f55..a74e608d 100644
--- a/src/hooks/useAppLayout.ts
+++ b/src/hooks/useAppLayout.ts
@@ -1,5 +1,5 @@
import { useContext } from 'react'
-import { AppLayoutContext } from '@/components/AppLayout/context'
+import { AppLayoutContext } from '../components/AppLayout/context'
export const useAppLayout = () => {
const context = useContext(AppLayoutContext)
diff --git a/src/hooks/useModal.tsx b/src/hooks/useModal.tsx
index 96127932..c4270e65 100644
--- a/src/hooks/useModal.tsx
+++ b/src/hooks/useModal.tsx
@@ -1,5 +1,5 @@
import { useContext } from 'react'
-import { ModalContext } from '@/context/ModalContext'
+import { ModalContext } from '../context/ModalContext'
export function useModal() {
const context = useContext(ModalContext)
diff --git a/src/hooks/useTailwindBreakpoint.ts b/src/hooks/useTailwindBreakpoint.ts
index 311c64f6..884d1d67 100644
--- a/src/hooks/useTailwindBreakpoint.ts
+++ b/src/hooks/useTailwindBreakpoint.ts
@@ -1,6 +1,6 @@
import { useState, useLayoutEffect } from 'react'
-import { Breakpoint } from '@/types.js'
-import debounce from '@/lib/debounce'
+import { Breakpoint } from '../types.js'
+import debounce from '../lib/debounce'
// Define breakpoints in pixels matching Tailwind's default breakpoints
const breakpointValues = {
diff --git a/src/index.ts b/src/index.ts
index 779c3aef..67ca8bc3 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -1,31 +1,31 @@
import './global.css'
-export { isGroupOf } from '@/lib/typeUtils'
-export { Grid, type GridProps } from '@/components/Grid'
-export { Stack, type StackProps } from '@/components/Stack'
-export { Button, type ButtonProps } from '@/components/Button'
-export { Card, type CardProps } from '@/components/Card'
-export { Icon, type IconProps } from '@/components/Icon'
-export { isIconName } from '@/components/Icon/isIconName'
-export { type IconName } from '@/components/Icon/names'
-export { Separator, type SeparatorProps } from '@/components/Separator'
-export { Skeleton, type SkeletonProps } from '@/components/Skeleton'
-export { Badge, type BadgeProps } from '@/components/Badge'
-export { Heading, type HeadingProps } from '@/components/Heading'
-export { Text, type TextProps } from '@/components/Text'
-export { Score, type ScoreValue } from '@/components/Score'
-export { Logo, type LogoProps } from '@/components/Logo'
-export { AnimatedLogo } from '@/components/Logo/Animated'
-export { Container, type ContainerProps } from '@/components/Container'
-export { Combobox, type ComboboxProps } from '@/components/Combobox'
+export { isGroupOf } from './lib/typeUtils'
+export { Grid, type GridProps } from './components/Grid'
+export { Stack, type StackProps } from './components/Stack'
+export { Button, type ButtonProps } from './components/Button'
+export { Card, type CardProps } from './components/Card'
+export { Icon, type IconProps } from './components/Icon'
+export { isIconName } from './components/Icon/isIconName'
+export { type IconName } from './components/Icon/names'
+export { Separator, type SeparatorProps } from './components/Separator'
+export { Skeleton, type SkeletonProps } from './components/Skeleton'
+export { Badge, type BadgeProps } from './components/Badge'
+export { Heading, type HeadingProps } from './components/Heading'
+export { Text, type TextProps } from './components/Text'
+export { Score, type ScoreValue } from './components/Score'
+export { Logo, type LogoProps } from './components/Logo'
+export { AnimatedLogo } from './components/Logo/Animated'
+export { Container, type ContainerProps } from './components/Container'
+export { Combobox, type ComboboxProps } from './components/Combobox'
export {
TargetLanguageIcon,
type TargetLanguageIconProps,
-} from '@/components/TargetLanguageIcon'
-export { UserAvatar, type UserAvatarProps } from '@/components/UserAvatar'
-export { Subnav, type SubnavItem, type SubnavProps } from '@/components/Subnav'
-export { CodeSnippet, type CodeSnippetProps } from '@/components/CodeSnippet'
-export { Pre, type PreProps } from '@/components/CodeHighlight/Pre'
+} from './components/TargetLanguageIcon'
+export { UserAvatar, type UserAvatarProps } from './components/UserAvatar'
+export { Subnav, type SubnavItem, type SubnavProps } from './components/Subnav'
+export { CodeSnippet, type CodeSnippetProps } from './components/CodeSnippet'
+export { Pre, type PreProps } from './components/CodeHighlight/Pre'
export {
highlightCode,
getMappedLanguage,
@@ -36,61 +36,61 @@ export {
type HighlightedCode,
type CodeLine,
type CodeToken,
-} from '@/lib/codeUtils'
+} from './lib/codeUtils'
export {
LoggedInUserMenu,
type LoggedInUserProps,
-} from '@/components/LoggedInUserMenu'
+} from './components/LoggedInUserMenu'
export {
PromptInput,
type PromptInputProps,
type Suggestion,
type Attachment,
-} from '@/components/PromptInput'
+} from './components/PromptInput'
export {
WorkspaceSelector,
type Org,
type Workspace,
type WorkspaceSelectorProps,
-} from '@/components/WorkspaceSelector'
-export { Wizard, type WizardProps } from '@/components/Wizard'
-export { type WizardStep, type WizardCommand } from '@/components/Wizard/types'
+} from './components/WorkspaceSelector'
+export { Wizard, type WizardProps } from './components/Wizard'
+export { type WizardStep, type WizardCommand } from './components/Wizard/types'
export {
MoonshineConfigProvider,
type MoonshineConfigProviderProps,
-} from '@/context/ConfigContext'
-export { useConfig as useMoonshineConfig } from '@/hooks/useConfig'
-export { useTheme as useMoonshineTheme, type Theme } from '@/hooks/useTheme'
-export { default as useTailwindBreakpoint } from '@/hooks/useTailwindBreakpoint'
+} from './context/ConfigContext'
+export { useConfig as useMoonshineConfig } from './hooks/useConfig'
+export { useTheme as useMoonshineTheme, type Theme } from './hooks/useTheme'
+export { default as useTailwindBreakpoint } from './hooks/useTailwindBreakpoint'
export {
GradientCircle,
type GradientCircleProps,
-} from '@/components/GradientCircle'
-export { Alert, type AlertProps } from '@/components/Alert'
-export { Tabs, type TabProps } from '@/components/Tabs'
+} from './components/GradientCircle'
+export { Alert, type AlertProps } from './components/Alert'
+export { Tabs, type TabProps } from './components/Tabs'
export {
Table,
type TableProps,
type Column,
type Group,
-} from '@/components/Table'
-export { Input, type InputProps } from '@/components/Input'
+} from './components/Table'
+export { Input, type InputProps } from './components/Input'
export {
type SupportedLanguage,
supportedLanguages,
isSupportedLanguage,
-} from '@/types'
-export { PageHeader, type PageHeaderProps } from '@/components/PageHeader'
+} from './types'
+export { PageHeader, type PageHeaderProps } from './components/PageHeader'
-export { ExternalPill, type ExternalPillProps } from '@/components/ExternalPill'
+export { ExternalPill, type ExternalPillProps } from './components/ExternalPill'
export {
LanguageIndicator,
type LanguageIndicatorProps,
-} from '@/components/LanguageIndicator'
+} from './components/LanguageIndicator'
export {
PullRequestLink,
type PullRequestLinkProps,
-} from '@/components/PullRequestLink'
+} from './components/PullRequestLink'
export {
Select,
SelectGroup,
@@ -101,73 +101,73 @@ export {
SelectScrollDownButton,
SelectScrollUpButton,
SelectSeparator,
-} from '@/components/Select'
+} from './components/Select'
export {
Tooltip,
TooltipTrigger,
TooltipContent,
TooltipProvider,
TooltipPortal,
-} from '@/components/Tooltip'
+} from './components/Tooltip'
export {
Popover,
PopoverContent,
PopoverTrigger,
PopoverAnchor,
PopoverPortal,
-} from '@/components/Popover'
-export { Facepile, type FacepileProps } from '@/components/Facepile'
-export { Link, type LinkProps } from '@/components/Link'
-export { Dialog } from '@/components/Dialog'
-export { Switch, type SwitchProps } from '@/components/Switch'
-export { SegmentedButton } from '@/components/SegmentedButton'
+} from './components/Popover'
+export { Facepile, type FacepileProps } from './components/Facepile'
+export { Link, type LinkProps } from './components/Link'
+export { Dialog } from './components/Dialog'
+export { Switch, type SwitchProps } from './components/Switch'
+export { SegmentedButton } from './components/SegmentedButton'
// AppLayout
export {
AppLayout,
type AppLayoutNavItemProps,
type AppLayoutNavItemGroupProps,
type AppLayoutBreadcrumbItemProps,
-} from '@/components/AppLayout'
-export { AppLayoutProvider } from '@/components/AppLayout/provider'
-export { useAppLayout } from '@/hooks/useAppLayout'
+} from './components/AppLayout'
+export { AppLayoutProvider } from './components/AppLayout/provider'
+export { useAppLayout } from './hooks/useAppLayout'
-export { ActionBar, type ActionBarProps } from '@/components/ActionBar'
+export { ActionBar, type ActionBarProps } from './components/ActionBar'
export {
Key,
type KeyProps,
KeyHint,
type KeyHintProps,
-} from '@/components/KeyHint'
+} from './components/KeyHint'
export {
HighlightedText,
type HighlightedTextProps,
-} from '@/components/HighlightedText'
+} from './components/HighlightedText'
export {
DragNDropArea,
type DragNDropAreaProps,
-} from '@/components/DragNDrop/DragNDropArea'
-export { DragOverlay } from '@/components/DragNDrop/DragOverlay'
+} from './components/DragNDrop/DragNDropArea'
+export { DragOverlay } from './components/DragNDrop/DragOverlay'
export {
Draggable,
type DraggableProps,
-} from '@/components/DragNDrop/Draggable'
+} from './components/DragNDrop/Draggable'
export {
Droppable,
type DroppableProps,
-} from '@/components/DragNDrop/Droppable'
+} from './components/DragNDrop/Droppable'
export {
ResizablePanel,
type ResizablePanelProps,
-} from '@/components/ResizablePanel'
+} from './components/ResizablePanel'
export {
CodePlayground,
type CodePlaygroundProps,
type CodePlaygroundSnippets,
-} from '@/components/CodePlayground'
+} from './components/CodePlayground'
export {
CodeEditor,
type CodeEditorLayoutProps,
-} from '@/components/CodeEditorLayout'
+} from './components/CodeEditorLayout'
export {
Command,
CommandGroup,
@@ -178,7 +178,7 @@ export {
CommandSeparator,
CommandShortcut,
CommandDialog,
-} from '@/components/Command'
+} from './components/Command'
export {
DropdownMenu,
DropdownMenuCheckboxItem,
@@ -195,28 +195,28 @@ export {
DropdownMenuRadioItem,
DropdownMenuSeparator,
DropdownMenuShortcut,
-} from '@/components/Dropdown'
+} from './components/Dropdown'
// ContextDropdown
-export { ContextDropdown } from '@/components/ContextDropdown'
-export { ModalProvider } from '@/context/ModalContext'
-export { useModal } from '@/hooks/useModal'
+export { ContextDropdown } from './components/ContextDropdown'
+export { ModalProvider } from './context/ModalContext'
+export { useModal } from './hooks/useModal'
// Modal
-export { Modal, type ModalProps } from '@/components/Modal'
+export { Modal, type ModalProps } from './components/Modal'
export {
ThemeSwitcher,
type ThemeSwitcherProps,
-} from '@/components/ThemeSwitcher'
+} from './components/ThemeSwitcher'
-export { cn } from '@/lib/utils'
+export { cn } from './lib/utils'
// Timeline
-export { Timeline } from '@/components/Timeline'
+export { Timeline } from './components/Timeline'
/** START BETA COMPONENTS */
-import { CLIWizard } from '@/components/__beta__/CLIWizard'
+import { CLIWizard } from './components/__beta__/CLIWizard'
export const beta = {
// TODO: This component is not yet reusable, it's only for use on the SDK Overview page right now
@@ -228,7 +228,7 @@ export {
AIChatContainer,
AIChatMessage,
AIChatMessageComposer,
-} from '@/components/AIChat'
-export { useToolCallApproval } from '@/components/AIChat/toolCallApproval'
+} from './components/AIChat'
+export { useToolCallApproval } from './components/AIChat/toolCallApproval'
/** END BETA COMPONENTS */
diff --git a/src/lib/codeUtils.test.ts b/src/lib/codeUtils.test.ts
index c3d6181a..8fef1345 100644
--- a/src/lib/codeUtils.test.ts
+++ b/src/lib/codeUtils.test.ts
@@ -7,7 +7,7 @@ import {
LIGHT_THEME,
DARK_THEME,
} from './codeUtils'
-import { ProgrammingLanguage } from '@/types'
+import { ProgrammingLanguage } from '../types'
describe('codeUtils', () => {
describe('removeCodeHikeAnnotations', () => {
diff --git a/src/lib/codeUtils.ts b/src/lib/codeUtils.ts
index 8679b2ef..16b38711 100644
--- a/src/lib/codeUtils.ts
+++ b/src/lib/codeUtils.ts
@@ -1,5 +1,5 @@
import { codeToTokens, BundledLanguage, BundledTheme } from 'shiki'
-import { ProgrammingLanguage, SupportedLanguage } from '@/types'
+import { ProgrammingLanguage, SupportedLanguage } from '../types'
export const LIGHT_THEME = 'github-light' as const
export const DARK_THEME = 'github-dark' as const
@@ -55,7 +55,10 @@ export async function highlightCode(
lang,
}
} catch (error) {
- console.error('Error highlighting code:', error)
+ // Only log errors outside of test environment
+ if (!process.env.VITEST && !process.env.NODE_ENV?.includes('test')) {
+ console.error('Error highlighting code:', error)
+ }
// Fallback to plain text
return {
lines: cleanCode.split('\n').map((line) => ({
diff --git a/src/lib/responsiveMappers.ts b/src/lib/responsiveMappers.ts
index 6ead96e0..8673ee48 100644
--- a/src/lib/responsiveMappers.ts
+++ b/src/lib/responsiveMappers.ts
@@ -1,4 +1,4 @@
-import { Alignment, Gap, Padding, PaddingPerSide } from '@/types'
+import { Alignment, Gap, Padding, PaddingPerSide } from '../types'
import {
isPaddingHorizontalOrVerticalAxis,
isPaddingPerSide,
diff --git a/src/lib/responsiveUtils.test.ts b/src/lib/responsiveUtils.test.ts
index 7664ba53..4c599ba4 100644
--- a/src/lib/responsiveUtils.test.ts
+++ b/src/lib/responsiveUtils.test.ts
@@ -1,6 +1,6 @@
import { describe, expect, test } from 'vitest'
import { resolveSizeForBreakpoint } from './responsiveUtils'
-import { breakpoints, sizes } from '@/types'
+import { breakpoints, sizes } from '../types'
describe('resolveSizeForBreakpoint', () => {
test('single value returns the same value', () => {
diff --git a/src/lib/responsiveUtils.ts b/src/lib/responsiveUtils.ts
index bff4d116..834ad57d 100644
--- a/src/lib/responsiveUtils.ts
+++ b/src/lib/responsiveUtils.ts
@@ -1,4 +1,4 @@
-import { Breakpoint, breakpoints, Gap, ResponsiveValue, Size } from '@/types'
+import { Breakpoint, breakpoints, Gap, ResponsiveValue, Size } from '../types'
import { isResponsiveValueObject, isSize } from './typeUtils'
export const gapMapper = (gap: Gap) => `gap-${gap}`
diff --git a/src/lib/storybookUtils.tsx b/src/lib/storybookUtils.tsx
index 6d705439..556da211 100644
--- a/src/lib/storybookUtils.tsx
+++ b/src/lib/storybookUtils.tsx
@@ -1,4 +1,4 @@
-import { Grid } from '@/components/Grid'
+import { Grid } from '../components/Grid'
/**
* Create a list of sample children for testing and rendering in storybook
diff --git a/src/lib/typeUtils.ts b/src/lib/typeUtils.ts
index bb7696b9..19033bd1 100644
--- a/src/lib/typeUtils.ts
+++ b/src/lib/typeUtils.ts
@@ -8,8 +8,8 @@ import {
ResponsiveValue,
Size,
sizes,
-} from '@/types'
-import { Group } from '@/components/Table'
+} from '../types'
+import { Group } from '../components/Table'
/**
* Create a range of numbers from 0 to N
diff --git a/src/lib/utils.ts b/src/lib/utils.ts
index 46d1b403..e1e0c4be 100644
--- a/src/lib/utils.ts
+++ b/src/lib/utils.ts
@@ -1,4 +1,4 @@
-import { Breakpoint, ResponsiveValue } from '@/types'
+import { Breakpoint, ResponsiveValue } from '../types'
import { clsx, type ClassValue } from 'clsx'
import { extendTailwindMerge } from 'tailwind-merge'
import { isResponsiveValueObject } from './typeUtils'
diff --git a/tsconfig.json b/tsconfig.json
index 6eae2512..e4d2f311 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -15,12 +15,6 @@
"rootDir": "./src",
"incremental": true,
"tsBuildInfoFile": "./dist/.tsbuildinfo",
- "paths": {
- "@/*": [
- "./src/*"
- ],
- },
- "baseUrl": ".",
"types": [
"@testing-library/jest-dom",
"vite/client",
@@ -34,8 +28,8 @@
],
"exclude": [
"node_modules",
- "dist",
"src/**/*.stories.@(mdx|tsx)",
- "src/**/*.test.@(ts|tsx)"
+ "src/**/*.test.@(ts|tsx)",
+ "src/index.mdx"
]
}
diff --git a/vite.config.mts b/vite.config.mts
index eaa3727c..bb0e7882 100644
--- a/vite.config.mts
+++ b/vite.config.mts
@@ -1,17 +1,17 @@
-import { resolve } from 'path'
+/**
+ * We no longer bundle Moonshine, and distribute it as pure TypeScript.
+ * However, we still need Vite for storybook.
+ */
+
import { defineConfig } from 'vitest/config'
import react from '@vitejs/plugin-react'
-import dts from 'vite-plugin-dts'
import svgr from 'vite-plugin-svgr'
import tailwindcss from '@tailwindcss/vite'
-const packageName = 'moonshine'
-
export default defineConfig({
assetsInclude: ['**/*.riv'],
plugins: [
react(),
- dts(),
svgr({
svgrOptions: {
titleProp: true,
@@ -30,56 +30,4 @@ export default defineConfig({
},
base: './',
define: process.env.VITEST ? {} : { global: 'window' },
- build: {
- outDir: 'dist',
- emptyOutDir: process.env.CI ? true : false,
- lib: {
- entry: resolve(__dirname, 'src/index.ts'),
- name: packageName,
- fileName: (format) => `${packageName}.${format}.js`,
- formats: ['es'],
- },
- rollupOptions: {
- // Ensure consumers provide these deps. Also treat subpath imports as external
- // e.g. `lucide-react/dynamicIconImports`.
- external: (id) => {
- const externals = [
- 'ai',
- '@dnd-kit/core',
- '@dnd-kit/modifiers',
- '@dnd-kit/utilities',
- 'react',
- 'react-dom',
- 'react/jsx-runtime',
- 'lucide-react',
- '@rive-app/react-canvas-lite',
- 'motion',
- 'react-markdown',
- 'remark-gfm',
- 'shiki',
- 'react-virtuoso',
- 'react-resizable-panels',
- ]
- return externals.some((pkg) => id === pkg || id.startsWith(pkg + '/'))
- },
- output: {
- globals: {
- react: 'React',
- 'react/jsx-runtime': 'jsxRuntime',
- 'react-dom': 'ReactDOM',
- },
- },
- },
- sourcemap: true,
- target: 'esnext',
- minify: process.env.CI ? 'esbuild' : false,
- reportCompressedSize: process.env.CI ? true : false,
- cssMinify: process.env.CI ? true : false,
- },
-
- resolve: {
- alias: {
- '@': resolve(__dirname, 'src'),
- },
- },
})