Das Team-Submenue stand auf einem DropdownMenu, und alles, was ein
Menuepunkt braucht und ein Dropdown nicht kann, stand hier als
Handarbeit daneben: ein Zeitgeber fuers Aufklappen, ueberschriebene
Zeigerhandler gegen das Flackern beim Klick, unterdrueckter Fokus gegen
den Ring nach dem Zeigerbesuch.
NavigationMenu kann das von sich aus. Es hat openOnHover samt
delayDuration, es haelt seinen eigenen onclick zurueck, wenn per Zeiger
aufgeklappt wurde ("if opened via pointer move, we prevent the click
event"), es faengt keinen Fokus und sperrt kein Scrollen. Der Trigger
bleibt ueber das child-Snippet ein Link auf die Teamseite.
viewport={false}: Das Panel haengt unter seinem Menuepunkt, statt als
animierte Flaeche ueber die ganze Leiste zu fahren. Bei einem einzigen
aufklappbaren Punkt waere das grosses Kino ohne Stueck.
Das mobile Menue bekommt die Teams stattdessen eingerueckt und
aufgeklappt untergestellt. Auf dem Touchscreen gibt es kein
Ueberfahren — mit dem Menue allein waere seit dem Wegfall der Liste
"Meine Teams" gar kein Wechsel mehr moeglich gewesen.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01P32KoesVtABd6xWsqMKzhr
52 lines
1.6 KiB
JSON
52 lines
1.6 KiB
JSON
{
|
|
"name": "stammtisch-hersbruck.de",
|
|
"private": true,
|
|
"version": "2.0.0-alpha",
|
|
"type": "module",
|
|
"engines": {
|
|
"node": "^20.19 || ^22.12 || >=24"
|
|
},
|
|
"scripts": {
|
|
"dev": "vite dev --mode development",
|
|
"build": "vite build",
|
|
"preview": "vite preview",
|
|
"prepare": "svelte-kit sync || echo ''",
|
|
"check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
|
|
"check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
|
|
"test": "vitest run",
|
|
"test:watch": "vitest",
|
|
"generate-pocketbase-types": "node scripts/schema-to-json.mjs > .schema.tmp.json && pocketbase-typegen --json .schema.tmp.json --out ./src/lib/types.d.ts && rm -f .schema.tmp.json"
|
|
},
|
|
"devDependencies": {
|
|
"@internationalized/date": "^3.12.1",
|
|
"@lucide/svelte": "^1.42.0",
|
|
"@sveltejs/adapter-node": "^5.5.7",
|
|
"@sveltejs/kit": "^2.43.2",
|
|
"@sveltejs/vite-plugin-svelte": "^6.2.0",
|
|
"@tailwindcss/forms": "^0.5.10",
|
|
"@tailwindcss/typography": "^0.5.18",
|
|
"@tailwindcss/vite": "^4.1.13",
|
|
"bits-ui": "^2.18.1",
|
|
"clsx": "^2.1.1",
|
|
"jsdom": "^29.1.1",
|
|
"pocketbase-typegen": "^1.3.1",
|
|
"svelte": "^5.39.5",
|
|
"svelte-check": "^4.3.2",
|
|
"tailwind-merge": "^3.3.1",
|
|
"tailwind-variants": "^3.3.1",
|
|
"tailwindcss": "^4.1.13",
|
|
"tw-animate-css": "^1.4.0",
|
|
"typescript": "^5.9.2",
|
|
"vite": "^7.1.7",
|
|
"vitest": "^4.1.10"
|
|
},
|
|
"dependencies": {
|
|
"date-fns": "^4.1.0",
|
|
"dompurify": "^3.4.13",
|
|
"lucide-svelte": "^0.503.0",
|
|
"maplibre-gl": "^6.2.0",
|
|
"mode-watcher": "^1.1.0",
|
|
"pocketbase": "^0.26.0",
|
|
"tippy.js": "^6.3.7"
|
|
}
|
|
}
|