Skip to content

Commit 28d9772

Browse files
authored
Added an option to install Svelte
1 parent a4ac9f7 commit 28d9772

File tree

9 files changed

+870
-0
lines changed

9 files changed

+870
-0
lines changed

src/themes/ViewInstallCommand.php

Lines changed: 700 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import { defineConfig } from "vite";
2+
import leaf from "@leafphp/vite-plugin";
3+
import { svelte } from '@sveltejs/vite-plugin-svelte';
4+
5+
export default defineConfig({
6+
plugins: [
7+
leaf({
8+
input: ['app/views/js/app.js', 'app/views/css/app.css'],
9+
refresh: true,
10+
}),
11+
svelte(),
12+
],
13+
});
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<?php
2+
3+
app()->get('/hello', function () {
4+
inertia('Hello');
5+
});
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
4+
<head>
5+
<meta charset="UTF-8">
6+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
7+
<title inertia>Document</title>
8+
<?php echo vite(['/js/app.js']); ?>
9+
<?php
10+
if (!isset($__inertiaSsrDispatched)) {
11+
$__inertiaSsrDispatched = true;
12+
$__inertiaSsrResponse = (new \Leaf\Inertia\Ssr\Gateway())->dispatch($page);
13+
}
14+
15+
if ($__inertiaSsrResponse) {
16+
echo $__inertiaSsrResponse->head;
17+
}
18+
?>
19+
</head>
20+
21+
<body>
22+
<?php
23+
if (!isset($__inertiaSsrDispatched)) {
24+
$__inertiaSsrDispatched = true;
25+
$__inertiaSsrResponse = (new \Leaf\Inertia\Ssr\Gateway())->dispatch($page);
26+
}
27+
28+
if ($__inertiaSsrResponse) {
29+
echo $__inertiaSsrResponse->body;
30+
} else {
31+
echo '<div id="app" data-page="' . htmlspecialchars(json_encode($page), ENT_QUOTES, 'UTF-8', true) . '"></div>';
32+
}
33+
?>
34+
</body>
35+
36+
</html>
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<script>
2+
export let auth;
3+
4+
let count = 0;
5+
6+
const increment = () => {
7+
count++;
8+
};
9+
</script>
10+
11+
<div>
12+
<h1>Hello World!</h1>
13+
<p>Current user: {auth?.user?.name ?? "No auth is active"}</p>
14+
<p>{count}</p>
15+
<button on:click={increment} class="bg-green-900">Increment</button>
16+
</div>
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import { createInertiaApp } from "@inertiajs/svelte";
2+
import { resolvePageComponent } from "@leafphp/vite-plugin/inertia-helpers";
3+
4+
const appName = import.meta.env.VITE_APP_NAME || "Leaf PHP";
5+
6+
createInertiaApp({
7+
title: (title) => `${title} - ${appName}`,
8+
resolve: (name) =>
9+
resolvePageComponent(`./Pages/${name}.svelte`,
10+
import.meta.glob('./Pages/**/*.svelte', { eager: true })
11+
),
12+
//or with persistent layouts
13+
// {// setting the default page layout
14+
// const pages = import.meta.glob('./Pages/**/*.svelte', { eager: true })
15+
// let page = pages[`./Pages/${name}.svelte`]
16+
// return { default: page.default, layout: page.layout || Layout }
17+
// },
18+
setup({ el, App, props, plugin }) {
19+
new App({ target: el, props })
20+
},
21+
progress: {
22+
color: "#4B5563",
23+
},
24+
});
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
4+
<head>
5+
<meta charset="UTF-8">
6+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
7+
<title inertia>Document</title>
8+
<?php echo vite(['/js/app.js']); ?>
9+
<?php
10+
if (!isset($__inertiaSsrDispatched)) {
11+
$__inertiaSsrDispatched = true;
12+
$__inertiaSsrResponse = (new \Leaf\Inertia\Ssr\Gateway())->dispatch($page);
13+
}
14+
15+
if ($__inertiaSsrResponse) {
16+
echo $__inertiaSsrResponse->head;
17+
}
18+
?>
19+
</head>
20+
21+
<body>
22+
<?php
23+
if (!isset($__inertiaSsrDispatched)) {
24+
$__inertiaSsrDispatched = true;
25+
$__inertiaSsrResponse = (new \Leaf\Inertia\Ssr\Gateway())->dispatch($page);
26+
}
27+
28+
if ($__inertiaSsrResponse) {
29+
echo $__inertiaSsrResponse->body;
30+
} else {
31+
echo '<div id="app" data-page="' . htmlspecialchars(json_encode($page), ENT_QUOTES, 'UTF-8', true) . '"></div>';
32+
}
33+
?>
34+
</body>
35+
36+
</html>
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<script>
2+
export let auth;
3+
4+
let count = 0;
5+
6+
const increment = () => {
7+
count++;
8+
};
9+
</script>
10+
11+
<div>
12+
<h1>Hello World!</h1>
13+
<p>Current user: {auth?.user?.name ?? "No auth is active"}</p>
14+
<p>{count}</p>
15+
<button on:click={increment} class="bg-green-900">Increment</button>
16+
</div>
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import { createInertiaApp } from "@inertiajs/svelte";
2+
import { resolvePageComponent } from "@leafphp/vite-plugin/inertia-helpers";
3+
4+
const appName = import.meta.env.VITE_APP_NAME || "Leaf PHP";
5+
6+
createInertiaApp({
7+
title: (title) => `${title} - ${appName}`,
8+
resolve: (name) =>
9+
resolvePageComponent(`./Pages/${name}.svelte`,
10+
import.meta.glob('./Pages/**/*.svelte', { eager: true })
11+
),
12+
//or with persistent layouts
13+
// {// setting the default page layout
14+
// const pages = import.meta.glob('./Pages/**/*.svelte', { eager: true })
15+
// let page = pages[`./Pages/${name}.svelte`]
16+
// return { default: page.default, layout: page.layout || Layout }
17+
// },
18+
setup({ el, App, props, plugin }) {
19+
new App({ target: el, props })
20+
},
21+
progress: {
22+
color: "#4B5563",
23+
},
24+
});

0 commit comments

Comments
 (0)