|
1 | | -# Vue Interface |
| 1 | +# Why Vue Interface? |
2 | 2 |
|
3 | | -This is a monorepo for the [components](/docs/packages) of [Vue Interface](https://github.com/vue-interface). Components are organized in packages. The purpose of this monorepo is to provide a convenient and efficient way to develop and maintain UI components that are dependent on each other without relying on symlinks and other hacks that provide less than optimal development experiences. The goal is provide a collection of CLI tools so you can develop, version and publish for individual packages. |
| 3 | +**Vue Interface** is the solid foundation for your next masterpiece—built for speed, performance, and stunning design. We empower you to build exactly what you envision without fighting the library. |
4 | 4 |
|
5 | | -## Developing |
| 5 | +## 🚀 Built for the Future |
6 | 6 |
|
7 | | -To start developing in the mono repo run the following commands. `pnpm install` should be ran the first time, after anything package.json updates or when adding another submodule. |
| 7 | +### Modular by Design |
| 8 | +Install strictly what you use. Our scoped, independent packages keep your application lean and fast. |
8 | 9 |
|
9 | | -```bash |
10 | | -pnpm install |
11 | | -pnpm dev |
12 | | -``` |
| 10 | +### Tailwind Native |
| 11 | +Built on **Tailwind CSS v4**. Override styles and extend components instantly using the utility classes you know and love. |
13 | 12 |
|
14 | | -## Versioning |
| 13 | +### TypeScript First |
| 14 | +Written in **TypeScript** from the ground up for first-class type inference and a confident, error-free developer experience. |
15 | 15 |
|
16 | | -Each package is independently versioned using strict [semantic versioning](https://semver.org/). The monorepo uses [Changesets](https://akinoccc.github.io/changesets/) to manage versions and changelogs for all packages independently. When a package introduces a change, only that package receives a version bump and other packages remain unaffected. |
| 16 | +### Accessible & Inclusive |
| 17 | +Inclusive by default. We follow **WAI-ARIA** best practices, ensuring support for keyboard navigation and screen readers. |
17 | 18 |
|
18 | | -### Creating a Changeset |
19 | | -After making changes to one or more packages, create a changeset to document what changed: |
| 19 | +--- |
20 | 20 |
|
21 | | -::: code-group |
22 | | -```bash [pnpm] |
23 | | -pnpm changeset |
24 | | -``` |
| 21 | +### Ready for your next project? |
25 | 22 |
|
26 | | -```bash [yarn] |
27 | | -yarn changeset |
28 | | -``` |
29 | | -::: |
30 | | - |
31 | | -This interactive command will: |
32 | | - |
33 | | -1. Ask which packages changed - Select the packages you modified (use spacebar to select, enter to confirm) |
34 | | -2. Ask for version bump type - Choose the semantic version bump for each package: |
35 | | - - major - Breaking changes (e.g., removing a prop, changing API) |
36 | | - - minor - New features (e.g., adding a new prop, new functionality) |
37 | | - - patch - Bug fixes (e.g., fixing a rendering issue) |
38 | | -3. Ask for a summary - Write a brief description of the change (this appears in the changelog) |
39 | | - |
40 | | -### Example CLI Workflow |
41 | | - |
42 | | -```bash |
43 | | -🦋 Which packages would you like to include? |
44 | | - ◉ @vue-interface/input-field ← Select this package (press space) |
45 | | - ◯ @vue-interface/btn |
46 | | - ◯ @vue-interface/form-control |
47 | | - |
48 | | -🦋 What kind of change is this for @vue-interface/input-field? |
49 | | - major (breaking change) |
50 | | - minor (new feature) |
51 | | - ❯ patch (bug fix) ← Select this option (press space) |
52 | | - |
53 | | -🦋 Please enter a summary: |
54 | | - Fix styling error when input is disabled |
55 | | -``` |
56 | | - |
57 | | -The Changesets CLI then generates a markdown file in the .changeset/ directory with a random name (e.g., cool-lions-dance.md). |
58 | | - |
59 | | -## Publishing |
60 | | - |
61 | | -The monorepo uses GitHub Actions with Changesets to automatically publish packages to npm. The workflow is fully automated and handles versioning, changelog generation, and publishing. Ensure the following exists in the workspace in `.github/workflows/release.yaml` and Github actions will do the rest. |
62 | | - |
63 | | -```yaml |
64 | | -release: |
65 | | - name: Release |
66 | | - runs-on: ubuntu-latest |
67 | | - steps: |
68 | | - - name: Checkout Repo |
69 | | - uses: actions/checkout@v4 |
70 | | - with: |
71 | | - fetch-depth: 0 |
72 | | - - name: Setup Node.js |
73 | | - uses: actions/setup-node@v4 |
74 | | - with: |
75 | | - node-version: 22 |
76 | | - cache: pnpm |
77 | | - - name: Install Dependencies 🔌 |
78 | | - run: pnpm install --frozen-lockfile |
79 | | - - name: Run Tests |
80 | | - run: pnpm vitest run --coverage |
81 | | - - name: Build Packages |
82 | | - run: pnpm build |
83 | | - - name: Create Release Pull Request or Publish to npm 🪧 |
84 | | - id: changesets |
85 | | - uses: changesets/action@v1 |
86 | | - with: |
87 | | - publish: pnpm release |
88 | | - version: pnpm version |
89 | | - commit: "chore: version bump from changesets" |
90 | | - env: |
91 | | - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
92 | | - NPM_TOKEN: ${{ secrets.NPM_TOKEN }} |
93 | | -``` |
| 23 | +[Get Started with Vue Interface](/docs/getting-started) |
0 commit comments