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() - }) -}) - -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'), - }, - }, })