Skip to content

Commit 9fff246

Browse files
committed
feat: add support tailwindcss version 4, tweak scaffolding, tweak styles
The breeze-lite support laravel version 12 because it follows the upstream (laravel/breeze): laravel/breeze#451
1 parent 11149b9 commit 9fff246

File tree

11 files changed

+62
-52
lines changed

11 files changed

+62
-52
lines changed

docs/creating-chirps.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ We can then create our front-end `Chirps/Index` page component with a form for c
187187
<AuthenticatedLayout>
188188
<div class="max-w-2xl mx-auto p-4 sm:p-6 lg:p-8">
189189
<form onsubmit={submit}>
190-
<textarea required bind:value={$form.message} class="block w-full border-gray-300 focus:border-indigo-300 focus:ring focus:ring-indigo-200 focus:ring-opacity-50 rounded-md shadow-sm"
190+
<textarea required bind:value={$form.message} class="block w-full border-gray-300 focus:border-indigo-300 focus:ring focus:ring-indigo-200 focus:ring-indigo/50 rounded-md shadow-sm"
191191
placeholder="What's on your mind?"></textarea>
192192
<InputError class="mt-2" message={$form.errors.message} />
193193
<PrimaryButton class="mt-4">Chirp</PrimaryButton>

docs/deleting-chirps.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ Finally, we can add a delete button to the dropdown menu we created earlier in o
157157
</div>
158158
{#if editing}
159159
<form onsubmit={submit}>
160-
<textarea bind:value={$form.message} class="mt-4 w-full text-gray-900 border-gray-300 focus:border-indigo-300 focus:ring focus:ring-indigo-200 focus:ring-opacity-50 rounded-md shadow-sm"></textarea>
160+
<textarea bind:value={$form.message} class="mt-4 w-full text-gray-900 border-gray-300 focus:border-indigo-300 focus:ring focus:ring-indigo-200 focus:ring-indigo/50 rounded-md shadow-sm"></textarea>
161161
<InputError message={$form.errors.message} class="mt-2" />
162162
<div class="space-x-2">
163163
<PrimaryButton class="mt-4">Save</PrimaryButton>

docs/editing-chirps.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ We're going to use the `Dropdown` component that comes with Breeze, which we'll
100100
</div>
101101
{#if editing} // [!code ++]
102102
<form onsubmit={submit}> // [!code ++]
103-
<textarea bind:value={$form.message} class="mt-4 w-full text-gray-900 border-gray-300 focus:border-indigo-300 focus:ring focus:ring-indigo-200 focus:ring-opacity-50 rounded-md shadow-sm"></textarea> // [!code ++]
103+
<textarea bind:value={$form.message} class="mt-4 w-full text-gray-900 border-gray-300 focus:border-indigo-300 focus:ring focus:ring-indigo-200 focus:ring-indigo/50 rounded-md shadow-sm"></textarea> // [!code ++]
104104
<InputError message={$form.errors.message} class="mt-2" /> // [!code ++]
105105
<div class="space-x-2"> // [!code ++]
106106
<PrimaryButton class="mt-4">Save</PrimaryButton> // [!code ++]

docs/showing-chirps.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ Finally, we will update our `Chirps/Index` page component to accept the `chirps`
123123
<AuthenticatedLayout>
124124
<div class="max-w-2xl mx-auto p-4 sm:p-6 lg:p-8">
125125
<form onsubmit={submit}>
126-
<textarea required bind:value={$form.message} class="block w-full border-gray-300 focus:border-indigo-300 focus:ring focus:ring-indigo-200 focus:ring-opacity-50 rounded-md shadow-sm"
126+
<textarea required bind:value={$form.message} class="block w-full border-gray-300 focus:border-indigo-300 focus:ring focus:ring-indigo-200 focus:ring-indigo/50 rounded-md shadow-sm"
127127
placeholder="What's on your mind?"></textarea>
128128
<InputError class="mt-2" message={$form.errors.message} />
129129
<PrimaryButton class="mt-4">Chirp</PrimaryButton>

src/Console/InstallsInertiaStacks.php

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,9 @@ protected function installInertiaSvelteStack()
2727
return [
2828
'@inertiajs/svelte' => '^2.0.0',
2929
'@tailwindcss/forms' => '^0.5.7',
30-
'@sveltejs/vite-plugin-svelte' => '^5.0.0',
31-
'autoprefixer' => '^10.4.20',
32-
'postcss' => '^8.4.33',
33-
'tailwindcss' => '^3.4.10',
30+
'@tailwindcss/vite' => '^4.0.0',
31+
'@sveltejs/vite-plugin-svelte' => '^6.0.0',
32+
'tailwindcss' => '^4.0.0',
3433
'svelte' => '^5.0',
3534
'svelte-check' => '^4.0.0',
3635
] + $packages;
@@ -158,10 +157,9 @@ protected function installInertiaSvelteStack()
158157
copy(base_path('vendor/laravel/breeze/stubs/inertia-common/routes/auth.php'), base_path('routes/auth.php'));
159158

160159
// Tailwind / Vite...
161-
copy(base_path('vendor/laravel/breeze/stubs/default/resources/css/app.css'), resource_path('css/app.css'));
162-
copy(base_path('vendor/laravel/breeze/stubs/default/postcss.config.js'), base_path('postcss.config.js'));
163-
copy(base_path('vendor/laravel/breeze/stubs/inertia-common/tailwind.config.js'), base_path('tailwind.config.js'));
164160
copy(__DIR__.'/../../stubs/inertia-svelte/vite.config.js', base_path('vite.config.js'));
161+
copy(__DIR__.'/../../stubs/default/resources/css/app.css', resource_path('css/app.css'));
162+
$this->replaceInFile('.js', '.svelte', resource_path('css/app.css'));
165163

166164
if ($this->option('typescript')) {
167165
copy(__DIR__.'/../../stubs/inertia-svelte-ts/tsconfig.json', base_path('tsconfig.json'));
@@ -177,13 +175,10 @@ protected function installInertiaSvelteStack()
177175

178176
$this->replaceInFile('.js', '.ts', base_path('vite.config.js'));
179177
$this->replaceInFile('.js', '.ts', resource_path('views/app.blade.php'));
180-
$this->replaceInFile('.vue', '.svelte', base_path('tailwind.config.js'));
181178
$this->replaceInFile('"vite build', '"tsc && vite build', base_path('package.json'));
182179
} else {
183180
copy(__DIR__.'/../../stubs/inertia-svelte/jsconfig.json', base_path('jsconfig.json'));
184181
copy(__DIR__.'/../../stubs/inertia-svelte/resources/js/app.js', resource_path('js/app.js'));
185-
186-
$this->replaceInFile('.vue', '.svelte', base_path('tailwind.config.js'));
187182
}
188183

189184
if ($this->option('ssr')) {
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
@import 'tailwindcss';
2+
3+
@source '../../vendor/laravel/framework/src/Illuminate/Pagination/resources/views/*.blade.php';
4+
@source '../../storage/framework/views/*.php';
5+
@source '../**/*.blade.php';
6+
@source '../**/*.js';
7+
8+
@theme {
9+
--font-sans: 'Instrument Sans', ui-sans-serif, system-ui, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji',
10+
'Segoe UI Symbol', 'Noto Color Emoji';
11+
}
12+
13+
@plugin '@tailwindcss/forms';

stubs/inertia-svelte-ts/resources/js/Components/Dropdown.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@
8787
class="absolute z-50 mt-2 rounded-md shadow-lg {widthClass} {alignmentClasses}"
8888
onclick={() => (open = false)}
8989
>
90-
<div class="rounded-md ring-1 ring-black ring-opacity-5 {contentClasses}">
90+
<div class="rounded-md ring ring-black ring-black/20 {contentClasses}">
9191
{@render content()}
9292
</div>
9393
</div>

stubs/inertia-svelte-ts/resources/js/Pages/Welcome.svelte

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -54,15 +54,15 @@
5454
<a
5555
use:inertia
5656
href={route('dashboard')}
57-
class="rounded-md px-3 py-2 text-black ring-1 ring-transparent transition hover:text-black/70 focus:outline-none focus-visible:ring-[#FF2D20] dark:text-white dark:hover:text-white/80 dark:focus-visible:ring-white"
57+
class="rounded-md px-3 py-2 text-black ring ring-transparent transition hover:text-black/70 focus:outline-none focus-visible:ring-[#FF2D20] dark:text-white dark:hover:text-white/80 dark:focus-visible:ring-white"
5858
>
5959
Dashboard
6060
</a>
6161
{:else}
6262
<a
6363
use:inertia
6464
href={route('login')}
65-
class="rounded-md px-3 py-2 text-black ring-1 ring-transparent transition hover:text-black/70 focus:outline-none focus-visible:ring-[#FF2D20] dark:text-white dark:hover:text-white/80 dark:focus-visible:ring-white"
65+
class="rounded-md px-3 py-2 text-black ring ring-transparent transition hover:text-black/70 focus:outline-none focus-visible:ring-[#FF2D20] dark:text-white dark:hover:text-white/80 dark:focus-visible:ring-white"
6666
>
6767
Log in
6868
</a>
@@ -71,7 +71,7 @@
7171
<a
7272
use:inertia
7373
href={route('register')}
74-
class="rounded-md px-3 py-2 text-black ring-1 ring-transparent transition hover:text-black/70 focus:outline-none focus-visible:ring-[#FF2D20] dark:text-white dark:hover:text-white/80 dark:focus-visible:ring-white"
74+
class="rounded-md px-3 py-2 text-black ring ring-transparent transition hover:text-black/70 focus:outline-none focus-visible:ring-[#FF2D20] dark:text-white dark:hover:text-white/80 dark:focus-visible:ring-white"
7575
>
7676
Register
7777
</a>
@@ -86,7 +86,7 @@
8686
<a
8787
href="https://laravel.com/docs"
8888
id="docs-card"
89-
class="flex flex-col items-start gap-6 overflow-hidden rounded-lg bg-white p-6 shadow-[0px_14px_34px_0px_rgba(0,0,0,0.08)] ring-1 ring-white/[0.05] transition duration-300 hover:text-black/70 hover:ring-black/20 focus:outline-none focus-visible:ring-[#FF2D20] md:row-span-3 lg:p-10 lg:pb-10 dark:bg-zinc-900 dark:ring-zinc-800 dark:hover:text-white/70 dark:hover:ring-zinc-700 dark:focus-visible:ring-[#FF2D20]"
89+
class="flex flex-col items-start gap-6 overflow-hidden rounded-lg bg-white p-6 shadow-[0px_14px_34px_0px_rgba(0,0,0,0.08)] ring ring-white/[0.05] transition duration-300 hover:text-black/70 hover:ring-black/20 focus:outline-none focus-visible:ring-[#FF2D20] md:row-span-3 lg:p-10 lg:pb-10 dark:bg-zinc-900 dark:ring-zinc-800 dark:hover:text-white/70 dark:hover:ring-zinc-700 dark:focus-visible:ring-[#FF2D20]"
9090
>
9191
<div
9292
id="screenshot-container"
@@ -162,7 +162,7 @@
162162

163163
<a
164164
href="https://laracasts.com"
165-
class="flex items-start gap-4 rounded-lg bg-white p-6 shadow-[0px_14px_34px_0px_rgba(0,0,0,0.08)] ring-1 ring-white/[0.05] transition duration-300 hover:text-black/70 hover:ring-black/20 focus:outline-none focus-visible:ring-[#FF2D20] lg:pb-10 dark:bg-zinc-900 dark:ring-zinc-800 dark:hover:text-white/70 dark:hover:ring-zinc-700 dark:focus-visible:ring-[#FF2D20]"
165+
class="flex items-start gap-4 rounded-lg bg-white p-6 shadow-[0px_14px_34px_0px_rgba(0,0,0,0.08)] ring ring-white/[0.05] transition duration-300 hover:text-black/70 hover:ring-black/20 focus:outline-none focus-visible:ring-[#FF2D20] lg:pb-10 dark:bg-zinc-900 dark:ring-zinc-800 dark:hover:text-white/70 dark:hover:ring-zinc-700 dark:focus-visible:ring-[#FF2D20]"
166166
>
167167
<div
168168
class="flex size-12 shrink-0 items-center justify-center rounded-full bg-[#FF2D20]/10 sm:size-16"
@@ -210,7 +210,7 @@
210210

211211
<a
212212
href="https://laravel-news.com"
213-
class="flex items-start gap-4 rounded-lg bg-white p-6 shadow-[0px_14px_34px_0px_rgba(0,0,0,0.08)] ring-1 ring-white/[0.05] transition duration-300 hover:text-black/70 hover:ring-black/20 focus:outline-none focus-visible:ring-[#FF2D20] lg:pb-10 dark:bg-zinc-900 dark:ring-zinc-800 dark:hover:text-white/70 dark:hover:ring-zinc-700 dark:focus-visible:ring-[#FF2D20]"
213+
class="flex items-start gap-4 rounded-lg bg-white p-6 shadow-[0px_14px_34px_0px_rgba(0,0,0,0.08)] ring ring-white/[0.05] transition duration-300 hover:text-black/70 hover:ring-black/20 focus:outline-none focus-visible:ring-[#FF2D20] lg:pb-10 dark:bg-zinc-900 dark:ring-zinc-800 dark:hover:text-white/70 dark:hover:ring-zinc-700 dark:focus-visible:ring-[#FF2D20]"
214214
>
215215
<div
216216
class="flex size-12 shrink-0 items-center justify-center rounded-full bg-[#FF2D20]/10 sm:size-16"
@@ -263,7 +263,7 @@
263263
</a>
264264

265265
<div
266-
class="flex items-start gap-4 rounded-lg bg-white p-6 shadow-[0px_14px_34px_0px_rgba(0,0,0,0.08)] ring-1 ring-white/[0.05] lg:pb-10 dark:bg-zinc-900 dark:ring-zinc-800"
266+
class="flex items-start gap-4 rounded-lg bg-white p-6 shadow-[0px_14px_34px_0px_rgba(0,0,0,0.08)] ring ring-white/[0.05] lg:pb-10 dark:bg-zinc-900 dark:ring-zinc-800"
267267
>
268268
<div
269269
class="flex size-12 shrink-0 items-center justify-center rounded-full bg-[#FF2D20]/10 sm:size-16"
@@ -291,59 +291,59 @@
291291
Laravel's robust library of first-party tools and libraries, such as
292292
<a
293293
href="https://forge.laravel.com"
294-
class="rounded-sm underline hover:text-black focus:outline-none focus-visible:ring-1 focus-visible:ring-[#FF2D20] dark:hover:text-white dark:focus-visible:ring-[#FF2D20]"
294+
class="rounded-sm underline hover:text-black focus:outline-none focus-visible:ring focus-visible:ring-[#FF2D20] dark:hover:text-white dark:focus-visible:ring-[#FF2D20]"
295295
>Forge</a
296296
>,
297297
<a
298298
href="https://vapor.laravel.com"
299-
class="rounded-sm underline hover:text-black focus:outline-none focus-visible:ring-1 focus-visible:ring-[#FF2D20] dark:hover:text-white"
299+
class="rounded-sm underline hover:text-black focus:outline-none focus-visible:ring focus-visible:ring-[#FF2D20] dark:hover:text-white"
300300
>Vapor</a
301301
>,
302302
<a
303303
href="https://nova.laravel.com"
304-
class="rounded-sm underline hover:text-black focus:outline-none focus-visible:ring-1 focus-visible:ring-[#FF2D20] dark:hover:text-white"
304+
class="rounded-sm underline hover:text-black focus:outline-none focus-visible:ring focus-visible:ring-[#FF2D20] dark:hover:text-white"
305305
>Nova</a
306306
>,
307307
<a
308308
href="https://envoyer.io"
309-
class="rounded-sm underline hover:text-black focus:outline-none focus-visible:ring-1 focus-visible:ring-[#FF2D20] dark:hover:text-white"
309+
class="rounded-sm underline hover:text-black focus:outline-none focus-visible:ring focus-visible:ring-[#FF2D20] dark:hover:text-white"
310310
>Envoyer</a
311311
>, and
312312
<a
313313
href="https://herd.laravel.com"
314-
class="rounded-sm underline hover:text-black focus:outline-none focus-visible:ring-1 focus-visible:ring-[#FF2D20] dark:hover:text-white"
314+
class="rounded-sm underline hover:text-black focus:outline-none focus-visible:ring focus-visible:ring-[#FF2D20] dark:hover:text-white"
315315
>Herd</a
316316
>
317317
help you take your projects to the next level. Pair them with powerful
318318
open source libraries like
319319
<a
320320
href="https://laravel.com/docs/billing"
321-
class="rounded-sm underline hover:text-black focus:outline-none focus-visible:ring-1 focus-visible:ring-[#FF2D20] dark:hover:text-white"
321+
class="rounded-sm underline hover:text-black focus:outline-none focus-visible:ring focus-visible:ring-[#FF2D20] dark:hover:text-white"
322322
>Cashier</a
323323
>,
324324
<a
325325
href="https://laravel.com/docs/dusk"
326-
class="rounded-sm underline hover:text-black focus:outline-none focus-visible:ring-1 focus-visible:ring-[#FF2D20] dark:hover:text-white"
326+
class="rounded-sm underline hover:text-black focus:outline-none focus-visible:ring focus-visible:ring-[#FF2D20] dark:hover:text-white"
327327
>Dusk</a
328328
>,
329329
<a
330330
href="https://laravel.com/docs/broadcasting"
331-
class="rounded-sm underline hover:text-black focus:outline-none focus-visible:ring-1 focus-visible:ring-[#FF2D20] dark:hover:text-white"
331+
class="rounded-sm underline hover:text-black focus:outline-none focus-visible:ring focus-visible:ring-[#FF2D20] dark:hover:text-white"
332332
>Echo</a
333333
>,
334334
<a
335335
href="https://laravel.com/docs/horizon"
336-
class="rounded-sm underline hover:text-black focus:outline-none focus-visible:ring-1 focus-visible:ring-[#FF2D20] dark:hover:text-white"
336+
class="rounded-sm underline hover:text-black focus:outline-none focus-visible:ring focus-visible:ring-[#FF2D20] dark:hover:text-white"
337337
>Horizon</a
338338
>,
339339
<a
340340
href="https://laravel.com/docs/sanctum"
341-
class="rounded-sm underline hover:text-black focus:outline-none focus-visible:ring-1 focus-visible:ring-[#FF2D20] dark:hover:text-white"
341+
class="rounded-sm underline hover:text-black focus:outline-none focus-visible:ring focus-visible:ring-[#FF2D20] dark:hover:text-white"
342342
>Sanctum</a
343343
>,
344344
<a
345345
href="https://laravel.com/docs/telescope"
346-
class="rounded-sm underline hover:text-black focus:outline-none focus-visible:ring-1 focus-visible:ring-[#FF2D20] dark:hover:text-white"
346+
class="rounded-sm underline hover:text-black focus:outline-none focus-visible:ring focus-visible:ring-[#FF2D20] dark:hover:text-white"
347347
>Telescope</a
348348
>, and more.
349349
</p>

stubs/inertia-svelte/resources/js/Components/Dropdown.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@
6767
class="absolute z-50 mt-2 rounded-md shadow-lg {widthClass} {alignmentClasses}"
6868
onclick={() => (open = false)}
6969
>
70-
<div class="rounded-md ring-1 ring-black ring-opacity-5 {contentClasses}">
70+
<div class="rounded-md ring ring-black ring-black/20 {contentClasses}">
7171
{@render content()}
7272
</div>
7373
</div>

0 commit comments

Comments
 (0)