feat(frontend): Tailwind v4 @theme + vite-plugin-pwa + local fonts

Replaced vite.config.js with laravel+tailwind v4+VitePWA config, added auth.js and
touch.js entry points. Rewrote app.css with Tailwind v4 @theme custom tokens and local
@font-face declarations for Plus Jakarta Sans (variable) and JetBrains Mono. Downloaded
both woff2 font files locally to public/fonts/ — no CDN links. Vite build: exit 0.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
main
Boban Blaskovic 2026-05-22 00:37:27 +02:00
parent fe3b8d904f
commit 318a6f1f6b
8 changed files with 6867 additions and 18 deletions

6803
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -11,6 +11,7 @@
"concurrently": "^9.0.1",
"laravel-vite-plugin": "^3.1",
"tailwindcss": "^4.0.0",
"vite": "^8.0.0"
"vite": "^8.0.0",
"vite-plugin-pwa": "^1.3.0"
}
}

Binary file not shown.

Binary file not shown.

View File

@ -1,11 +1,33 @@
@import 'tailwindcss';
@source '../../vendor/laravel/framework/src/Illuminate/Pagination/resources/views/*.blade.php';
@source '../../storage/framework/views/*.php';
@source '../**/*.blade.php';
@source '../**/*.js';
@import "tailwindcss";
@theme {
--font-sans: 'Instrument Sans', ui-sans-serif, system-ui, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji',
'Segoe UI Symbol', 'Noto Color Emoji';
--color-bg-base: #f0eee9;
--color-text-primary: oklch(0.22 0.015 270);
--color-text-secondary: oklch(0.42 0.012 270);
--color-text-muted: oklch(0.58 0.01 270);
--color-border-subtle: oklch(0.92 0.006 85);
--font-display: 'Plus Jakarta Sans', sans-serif;
--font-mono: 'JetBrains Mono', monospace;
}
@font-face {
font-family: 'Plus Jakarta Sans';
src: url('/fonts/PlusJakartaSans-VariableFont_wght.woff2') format('woff2');
font-weight: 100 900;
font-style: normal;
font-display: swap;
}
@font-face {
font-family: 'JetBrains Mono';
src: url('/fonts/JetBrainsMono-Regular.woff2') format('woff2');
font-weight: 400;
font-style: normal;
font-display: swap;
}
body {
background-color: var(--color-bg-base);
color: var(--color-text-primary);
font-family: var(--font-display);
}

1
resources/js/auth.js Normal file
View File

@ -0,0 +1 @@
// Auth entry point

1
resources/js/touch.js Normal file
View File

@ -0,0 +1 @@
// Touch/tracing entry point for Vorschule (Phase 7)

View File

@ -1,24 +1,45 @@
import { defineConfig } from 'vite';
import laravel from 'laravel-vite-plugin';
import { bunny } from 'laravel-vite-plugin/fonts';
import tailwindcss from '@tailwindcss/vite';
import { VitePWA } from 'vite-plugin-pwa';
export default defineConfig({
plugins: [
laravel({
input: ['resources/css/app.css', 'resources/js/app.js'],
refresh: true,
fonts: [
bunny('Instrument Sans', {
weights: [400, 500, 600],
}),
input: [
'resources/css/app.css',
'resources/js/auth.js',
'resources/js/app.js',
'resources/js/touch.js',
],
refresh: true,
}),
tailwindcss(),
VitePWA({
registerType: 'autoUpdate',
manifest: false,
workbox: {
runtimeCaching: [
{
urlPattern: /\.(?:js|css|woff2|png|svg|ico)$/,
handler: 'CacheFirst',
},
{
urlPattern: /\/.*$/,
handler: 'NetworkOnly',
},
],
},
}),
],
server: {
watch: {
ignored: ['**/storage/framework/views/**'],
host: '0.0.0.0',
port: 5173,
hmr: {
host: 'app.dev.lernschiff.com',
protocol: 'wss',
clientPort: 443,
},
cors: true,
},
});