Skip to content

Commit 7bcbb28

Browse files
committed
feat: move support packages to @void
1 parent 0db220c commit 7bcbb28

124 files changed

Lines changed: 819 additions & 822 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.github/workflows/publish.yml‎

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,19 +27,22 @@ jobs:
2727
- run: pnpm install --frozen-lockfile
2828
- run: pnpm -r build
2929

30-
# Publish in dependency order: void first, then adapters
30+
# Publish in dependency order: void first, then support packages
3131
- run: pnpm -F void publish --provenance --access public --no-git-checks
3232
env:
3333
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
34-
- run: pnpm -F @void-x/react publish --provenance --access public --no-git-checks
34+
- run: pnpm -F @void/md publish --provenance --access public --no-git-checks
3535
env:
3636
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
37-
- run: pnpm -F @void-x/vue publish --provenance --access public --no-git-checks
37+
- run: pnpm -F @void/react publish --provenance --access public --no-git-checks
3838
env:
3939
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
40-
- run: pnpm -F @void-x/svelte publish --provenance --access public --no-git-checks
40+
- run: pnpm -F @void/vue publish --provenance --access public --no-git-checks
4141
env:
4242
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
43-
- run: pnpm -F @void-x/solid publish --provenance --access public --no-git-checks
43+
- run: pnpm -F @void/svelte publish --provenance --access public --no-git-checks
44+
env:
45+
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
46+
- run: pnpm -F @void/solid publish --provenance --access public --no-git-checks
4447
env:
4548
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

‎CLAUDE.md‎

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -51,15 +51,15 @@ pnpm -C packages/vue typecheck # Typecheck a specific package
5151

5252
pnpm workspaces. Shared dependency versions use the **pnpm catalog** in `pnpm-workspace.yaml` (typescript, tsdown, vite, @cloudflare/workers-types, wrangler). Make sure to run `pnpm install` after making package structure changes.
5353

54-
| Package | npm name | Purpose |
55-
| ------------------------------------------------ | ---------------- | -------------------------------------------------------------- |
56-
| [`packages/void`](./packages/void/AGENTS.md) | `void` | Core Vite plugin — routing, inference, migrations, CLI |
57-
| [`packages/react`](./packages/react/README.md) | `@void-x/react` | React framework adapter for Pages mode (SSR, Link, useForm) |
58-
| [`packages/vue`](./packages/vue/README.md) | `@void-x/vue` | Vue framework adapter for Pages mode (SSR, Link, useForm) |
59-
| [`packages/svelte`](./packages/svelte/README.md) | `@void-x/svelte` | Svelte 5 framework adapter for Pages mode (SSR, Link, useForm) |
60-
| [`packages/solid`](./packages/solid/README.md) | `@void-x/solid` | SolidJS framework adapter for Pages mode (SSR, Link, useForm) |
61-
| [`docs`](./docs) | (private) | Documentation site (VitePress) |
62-
| `playground/*` | (private) | local apps for testing |
54+
| Package | npm name | Purpose |
55+
| ------------------------------------------------ | -------------- | -------------------------------------------------------------- |
56+
| [`packages/void`](./packages/void/AGENTS.md) | `void` | Core Vite plugin — routing, inference, migrations, CLI |
57+
| [`packages/react`](./packages/react/README.md) | `@void/react` | React framework adapter for Pages mode (SSR, Link, useForm) |
58+
| [`packages/vue`](./packages/vue/README.md) | `@void/vue` | Vue framework adapter for Pages mode (SSR, Link, useForm) |
59+
| [`packages/svelte`](./packages/svelte/README.md) | `@void/svelte` | Svelte 5 framework adapter for Pages mode (SSR, Link, useForm) |
60+
| [`packages/solid`](./packages/solid/README.md) | `@void/solid` | SolidJS framework adapter for Pages mode (SSR, Link, useForm) |
61+
| [`docs`](./docs) | (private) | Documentation site (VitePress) |
62+
| `playground/*` | (private) | local apps for testing |
6363

6464
## `void` Overview
6565

@@ -94,32 +94,32 @@ See [`packages/void/AGENTS.md`](./packages/void/AGENTS.md) for architecture, sou
9494

9595
**Note:** `packages/void/skills/void/docs` is ignored from git and is auto copied during build. Ignore files in this directory.
9696

97-
## `@void-x/vue` Overview
97+
## `@void/vue` Overview
9898

9999
Vue framework adapter for Pages mode — Inertia-inspired full-stack DX with SSR.
100100

101-
- **Plugin** (`@void-x/vue`): `voidVue()` — compiles Vue SFCs, generates SSR + client hydration entries
102-
- **Runtime** (`void/vue`): `Link`, `useForm`, `useShared` composables
101+
- **Plugin** (`@void/vue/plugin`): `voidVue()` — compiles Vue SFCs, generates SSR + client hydration entries
102+
- **Runtime** (`@void/vue`): `Link`, `useForm`, `useShared` composables
103103
- **Server handlers**: Remix-style `loader` (GET → props) and `action` (mutations) exports in companion `.server.ts` files
104104

105105
See [`packages/vue/README.md`](./packages/vue/README.md) for architecture.
106106

107-
## `@void-x/svelte` Overview
107+
## `@void/svelte` Overview
108108

109109
Svelte 5 framework adapter for Pages mode — same Inertia-inspired DX as Vue/React.
110110

111-
- **Plugin** (`@void-x/svelte`): `voidSvelte()` — wraps `@sveltejs/vite-plugin-svelte`, generates SSR + client hydration entries
112-
- **Runtime** (`void/svelte`): `Link`, `useForm`, `useShared`, `useRouter` — uses Svelte 5 runes (`$state`, `$derived`) and `getContext`
111+
- **Plugin** (`@void/svelte/plugin`): `voidSvelte()` — wraps `@sveltejs/vite-plugin-svelte`, generates SSR + client hydration entries
112+
- **Runtime** (`@void/svelte`): `Link`, `useForm`, `useShared`, `useRouter` — uses Svelte 5 runes (`$state`, `$derived`) and `getContext`
113113
- **Server handlers**: companion `.server.ts` files with `loader` and `action` exports (same as React adapter)
114114

115115
See [`packages/svelte/README.md`](./packages/svelte/README.md) for details.
116116

117-
## `@void-x/solid` Overview
117+
## `@void/solid` Overview
118118

119119
SolidJS framework adapter for Pages mode — same Inertia-inspired DX as Vue/React/Svelte.
120120

121-
- **Plugin** (`@void-x/solid`): `voidSolid()` — wraps `vite-plugin-solid`, generates SSR + client hydration entries
122-
- **Runtime** (`void/solid`): `Link`, `useForm`, `useShared`, `useRouter` — uses Solid signals (`createSignal`, `createStore`) and `createContext`/`useContext`
121+
- **Plugin** (`@void/solid/plugin`): `voidSolid()` — wraps `vite-plugin-solid`, generates SSR + client hydration entries
122+
- **Runtime** (`@void/solid`): `Link`, `useForm`, `useShared`, `useRouter` — uses Solid signals (`createSignal`, `createStore`) and `createContext`/`useContext`
123123
- **Server handlers**: companion `.server.ts` files with `loader` and `action` exports (same as React/Svelte adapter)
124124

125125
See [`packages/solid/README.md`](./packages/solid/README.md) for details.

‎docs/guide/pages-routing/actions-and-forms.md‎

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ Then, use `useForm` in the page component to submit to this action:
105105

106106
```tsx [React]
107107
// pages/users/create.tsx
108-
import { useForm } from "void/react";
108+
import { useForm } from "@void/react";
109109

110110
export default function CreateUser() {
111111
// "/users/create" autocompletes; { name, email } is typed from the action's validator
@@ -133,7 +133,7 @@ export default function CreateUser() {
133133
```vue [Vue]
134134
<!-- pages/users/create.vue -->
135135
<script setup lang="ts">
136-
import { useForm } from "void/vue";
136+
import { useForm } from "@void/vue";
137137
138138
// "/users/create" autocompletes; { name, email } is typed from the action's validator
139139
const form = useForm("/users/create", { name: "", email: "" });
@@ -155,7 +155,7 @@ const form = useForm("/users/create", { name: "", email: "" });
155155
```svelte [Svelte]
156156
<!-- pages/users/create.svelte -->
157157
<script>
158-
import { useForm } from "void/svelte";
158+
import { useForm } from "@void/svelte";
159159
160160
// "/users/create" autocompletes; { name, email } is typed from the action's validator
161161
const form = useForm("/users/create", { name: "", email: "" });
@@ -174,7 +174,7 @@ const form = useForm("/users/create", { name: "", email: "" });
174174

175175
```tsx [Solid]
176176
// pages/users/create.tsx
177-
import { useForm } from "void/solid";
177+
import { useForm } from "@void/solid";
178178

179179
export default function CreateUser() {
180180
// "/users/create" autocompletes; { name, email } is typed from the action's validator
@@ -243,7 +243,7 @@ The URL, body fields, and error keys are all typed per-action — each named act
243243
For one-shot mutations that don't need form state (dirty tracking, reset, field-level errors), use `action()` instead of `useForm`. It sends a request to a page action and triggers an Inertia page update, just like `useForm` — but without the reactive form object:
244244

245245
```ts
246-
import { useForm, action } from "void/react"; // or "void/vue", "void/svelte", "void/solid"
246+
import { useForm, action } from "@void/react"; // or "@void/vue", "@void/svelte", "@void/solid"
247247

248248
// Form with state + Inertia page update
249249
const form = useForm("/?create-user", { name: "", email: "" });
@@ -281,7 +281,7 @@ Or use `withValidator()` for automatic schema-based validation — errors are re
281281
::: code-group
282282

283283
```tsx [React]
284-
import { useForm } from "void/react";
284+
import { useForm } from "@void/react";
285285
import { useRef } from "react";
286286

287287
export default function Upload() {
@@ -310,7 +310,7 @@ export default function Upload() {
310310
```vue [Vue]
311311
<script setup lang="ts">
312312
import { ref } from "vue";
313-
import { useForm } from "void/vue";
313+
import { useForm } from "@void/vue";
314314
315315
const form = useForm("/photos", { title: "", photo: null as File | null });
316316
const fileInput = ref<HTMLInputElement>();
@@ -331,7 +331,7 @@ function onFileChange() {
331331

332332
```svelte [Svelte]
333333
<script>
334-
import { useForm } from "void/svelte";
334+
import { useForm } from "@void/svelte";
335335
336336
const form = useForm("/photos", { title: "", photo: null });
337337
</script>
@@ -344,7 +344,7 @@ function onFileChange() {
344344
```
345345

346346
```tsx [Solid]
347-
import { useForm } from "void/solid";
347+
import { useForm } from "@void/solid";
348348

349349
export default function Upload() {
350350
const form = useForm("/photos", { title: "", photo: null as File | null });

‎docs/guide/pages-routing/islands.md‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ Island pages cannot use `useForm` (which depends on the client-side router). Use
223223
::: code-group
224224

225225
```tsx [React]
226-
import { useIslandForm } from "void/react";
226+
import { useIslandForm } from "@void/react";
227227

228228
export default function PostForm() {
229229
const form = useIslandForm({ title: "", body: "" });
@@ -259,7 +259,7 @@ export default function PostForm() {
259259

260260
```vue [Vue]
261261
<script setup>
262-
import { useIslandForm } from "void/vue";
262+
import { useIslandForm } from "@void/vue";
263263
264264
const form = useIslandForm({ title: "", body: "" });
265265
@@ -287,7 +287,7 @@ function submit() {
287287

288288
```svelte [Svelte]
289289
<script>
290-
import { useIslandForm } from "void/svelte";
290+
import { useIslandForm } from "@void/svelte";
291291
292292
const form = useIslandForm({ title: "", body: "" });
293293
@@ -312,7 +312,7 @@ function submit() {
312312
```
313313

314314
```tsx [Solid]
315-
import { useIslandForm } from "void/solid";
315+
import { useIslandForm } from "@void/solid";
316316
import { Show } from "solid-js";
317317

318318
export default function PostForm() {

‎docs/guide/pages-routing/layouts.md‎

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ Place a layout file in any `pages/` directory to wrap all pages in that subtree:
8989

9090
```tsx [React]
9191
// pages/layout.tsx
92-
import { useShared, Link } from "void/react";
92+
import { useShared, Link } from "@void/react";
9393

9494
export default function Layout({ children }: { children: React.ReactNode }) {
9595
const { auth } = useShared();
@@ -109,7 +109,7 @@ export default function Layout({ children }: { children: React.ReactNode }) {
109109
```vue [Vue]
110110
<!-- pages/layout.vue -->
111111
<script setup lang="ts">
112-
import { useShared, Link } from "void/vue";
112+
import { useShared, Link } from "@void/vue";
113113
const { auth } = useShared();
114114
</script>
115115
@@ -128,7 +128,7 @@ const { auth } = useShared();
128128
```svelte [Svelte]
129129
<!-- pages/layout.svelte -->
130130
<script>
131-
import { useShared, Link } from "void/svelte";
131+
import { useShared, Link } from "@void/svelte";
132132
let { children } = $props();
133133
const { auth } = useShared();
134134
</script>
@@ -145,7 +145,7 @@ const { auth } = useShared();
145145

146146
```tsx [Solid]
147147
// pages/layout.tsx
148-
import { useShared, Link } from "void/solid";
148+
import { useShared, Link } from "@void/solid";
149149
import type { JSX } from "solid-js";
150150

151151
export default function Layout(props: { children: JSX.Element }) {
@@ -326,7 +326,7 @@ Access it on the client with `useShared()` — the return type is inferred from
326326
::: code-group
327327

328328
```tsx [React]
329-
import { useShared } from "void/react";
329+
import { useShared } from "@void/react";
330330

331331
export default function Page() {
332332
const { auth } = useShared(); // { auth: { user: { name: string } | null } }
@@ -336,20 +336,20 @@ export default function Page() {
336336

337337
```vue [Vue]
338338
<script setup lang="ts">
339-
import { useShared } from "void/vue";
339+
import { useShared } from "@void/vue";
340340
const { auth } = useShared(); // { auth: { user: { name: string } | null } }
341341
</script>
342342
```
343343

344344
```svelte [Svelte]
345345
<script>
346-
import { useShared } from "void/svelte";
346+
import { useShared } from "@void/svelte";
347347
const { auth } = useShared(); // { auth: { user: { name: string } | null } }
348348
</script>
349349
```
350350

351351
```tsx [Solid]
352-
import { useShared } from "void/solid";
352+
import { useShared } from "@void/solid";
353353

354354
export default function Page() {
355355
const shared = useShared(); // { auth: { user: { name: string } | null } }

0 commit comments

Comments
 (0)