Skip to content

Commit 709fca1

Browse files
committed
chore: update playground to current Solid packages
Refresh the playground to use the current Solid beta stack and modern TypeScript/Vite settings so it matches the repo's next-branch direction. Made-with: Cursor
1 parent 3de6c16 commit 709fca1

File tree

8 files changed

+871
-1497
lines changed

8 files changed

+871
-1497
lines changed

playground/hello.mdx

Lines changed: 0 additions & 5 deletions
This file was deleted.

playground/index.tsx

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,10 @@
1-
import { createSignal, lazy } from 'solid-js';
2-
import { MetaProvider } from 'solid-meta';
3-
import { createApp } from 'solid-utils';
4-
import { Router, useRoutes, Link } from 'solid-app-router';
5-
import type { RouteDefinition } from 'solid-app-router';
1+
import { createSignal, type ParentComponent, lazy } from 'solid-js';
2+
import { render } from '@solidjs/web';
3+
import { MetaProvider } from '@solidjs/meta';
4+
import { Router, type RouteDefinition } from '@solidjs/router';
65

76
import test from '@@/test.txt?raw';
87
import Home from '@/index';
9-
// @ts-ignore
10-
import Hello from './hello.mdx';
118

129
const json = await fetch('https://jsonplaceholder.typicode.com/todos/1').then((response) =>
1310
response.json(),
@@ -29,20 +26,25 @@ const routes: RouteDefinition[] = [
2926
},
3027
];
3128

32-
const App = () => {
29+
const App: ParentComponent = (props) => {
3330
const [count, setCount] = createSignal(0);
34-
const Route = useRoutes(routes);
3531

3632
return (
3733
<>
38-
<Link href="/">Home</Link>
39-
<Link href="/about">About</Link>
34+
<a href="/">Home</a>
35+
<a href="/about">About</a>
4036
<hr />
41-
<Route />
37+
{props.children}
4238
<button onClick={() => setCount(count() + 1)}>{count()}</button>
43-
<Hello />
4439
</>
4540
);
4641
};
4742

48-
createApp(App).use(MetaProvider).use(Router).mount('#app');
43+
render(
44+
() => (
45+
<MetaProvider>
46+
<Router root={App}>{routes}</Router>
47+
</MetaProvider>
48+
),
49+
document.getElementById('app') as HTMLElement,
50+
);

playground/package.json

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,13 @@
1010
"devDependencies": {
1111
"@babel/core": "^7.18.6",
1212
"@babel/plugin-syntax-top-level-await": "^7.14.5",
13-
"@mdx-js/mdx": "^2.1.2",
14-
"vite": "^3.0.0",
13+
"vite": "7.0.6",
1514
"vite-plugin-solid": "link:.."
1615
},
1716
"dependencies": {
18-
"solid-app-router": "^0.4.1",
19-
"solid-js": "^1.6.11",
20-
"solid-mdx": "^0.0.6",
21-
"solid-meta": "^0.27.5",
22-
"solid-utils": "^0.8.1"
17+
"@solidjs/meta": "0.30.0-next.0",
18+
"@solidjs/router": "0.17.0-next.1",
19+
"@solidjs/web": "2.0.0-beta.4",
20+
"solid-js": "2.0.0-beta.4"
2321
}
2422
}

playground/pages/index.tsx

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,27 @@
1-
import { Accessor, createRenderEffect, createSignal } from 'solid-js';
1+
import { type Accessor, createEffect, createSignal, onSettled } from 'solid-js';
22

33
function model(
4-
element: HTMLInputElement,
5-
value: Accessor<[Accessor<string>, (value: string) => void]>,
4+
value: [Accessor<string>, (value: string) => void],
65
) {
7-
const [field, setField] = value();
8-
createRenderEffect(() => (element.value = field()));
9-
element.addEventListener('input', (e: Event & { currentTarget: HTMLInputElement }) =>
10-
setField(e.currentTarget.value),
11-
);
6+
let element: HTMLInputElement;
7+
const [field, setField] = value;
8+
createEffect(field, (field) => {
9+
element.value = field;
10+
});
11+
onSettled(() => {
12+
element.addEventListener('input', (e: Event & { currentTarget: HTMLInputElement }) =>
13+
setField(e.currentTarget.value),
14+
);
15+
})
16+
return (el: HTMLInputElement) => element = el;
1217
}
1318

1419
export default function Home() {
1520
const [name, setName] = createSignal('');
1621
return (
1722
<>
18-
<input type="text" use:model={[name, setName]} />
23+
<input type="text" ref={model([name, setName])} />
1924
<h1>Hello {name()}</h1>
2025
</>
2126
);
2227
}
23-
24-
declare module 'solid-js' {
25-
namespace JSX {
26-
interface Directives {
27-
model: [() => any, (v: any) => any];
28-
}
29-
}
30-
}

0 commit comments

Comments
 (0)