diff --git a/2026-04-18 16.34.15 teeoff.no acc663ad88cd.jpg b/2026-04-18 16.34.15 teeoff.no acc663ad88cd.jpg new file mode 100644 index 0000000..33a3937 Binary files /dev/null and b/2026-04-18 16.34.15 teeoff.no acc663ad88cd.jpg differ diff --git a/backend/main.py b/backend/main.py index f0ea418..7287b05 100644 --- a/backend/main.py +++ b/backend/main.py @@ -2874,14 +2874,16 @@ async def quick_edit_facility(facility_id: int, request: QuickEditRequest): ).strip() if request.field == 'footnote': normalized_value = str(request.value or '').strip() or None + footnote_updated_at = datetime.utcnow() if normalized_value else None await conn.execute( """ UPDATE facilities SET footnote = $1, - footnote_updated_at = CASE WHEN $1 IS NULL THEN NULL ELSE NOW() END - WHERE id = $2 + footnote_updated_at = $2 + WHERE id = $3 """, normalized_value, + footnote_updated_at, facility_id ) else: diff --git a/docs/design-system.md b/docs/design-system.md index 097c733..2c0bed5 100644 --- a/docs/design-system.md +++ b/docs/design-system.md @@ -47,12 +47,25 @@ Etablert fontbruk i appen: - Display: `Oswald` - UI/brødtekst: `Mulish` +Anbefalt typescale: + +- Hero-eyebrow / små systemetiketter: `0.6875rem` til `0.75rem`, uppercase, høy tracking +- Filterlabels og kortbadges: `0.625rem` til `0.75rem`, uppercase, høy tracking +- Brødtekst kompakt: `0.9375rem` +- Standard brødtekst: `1rem` +- Lang lese-/forklaringstekst: `1rem` til `1.0625rem` med romslig linjehøyde +- Seksjonsoverskrift mobil: `2rem` til `2.5rem` +- Seksjonsoverskrift desktop: `3rem` til `3.75rem` +- Hero-hovedbudskap mobil: minst `1.75rem` +- Hero-hovedbudskap tablet/desktop: `3rem` til `5rem` + Regler: - Overskrifter skal bruke display-font og tåle høy vekt, store størrelser og tett linjehøyde. - Brødtekst, skjemaer, kortmetadata og hjelpetekst skal bruke UI-font. - Eyebrows, små etiketter og filterlabels skal ofte være uppercase med tydelig tracking. - Lange forklaringer skal være lettleste, ikke komprimerte. +- Mobil skal ikke få "samme typografi, bare mindre". De viktigste budskapene må fortsatt oppleves store og prioriterte på smale skjermer. Tone i typografi: diff --git a/frontend/src/app/FacilitySearch.tsx b/frontend/src/app/FacilitySearch.tsx index 9b398ea..7980ee8 100755 --- a/frontend/src/app/FacilitySearch.tsx +++ b/frontend/src/app/FacilitySearch.tsx @@ -379,6 +379,7 @@ export default function FacilitySearch({ const [facilityFilter, setFacilityFilter] = useState(""); const [sortMethod, setSortMethod] = useState("updated"); const [userLocation, setUserLocation] = useState<{ lat: number; lng: number } | null>(null); + const [isMobileSearchOpen, setIsMobileSearchOpen] = useState(false); useEffect(() => { setAreaFilter(fixedAreaFilter); @@ -588,6 +589,14 @@ export default function FacilitySearch({ filtersCount > 0 ? ` • ${filtersCount} aktive filtre` : "" }`; const labelClassName = variant === "home" ? "text-white/70" : "text-[#617063]"; + const isCollapsibleHomeSearch = variant === "home"; + const searchPanelOpen = !isCollapsibleHomeSearch || isMobileSearchOpen; + + useEffect(() => { + if (isCollapsibleHomeSearch && filtersCount > 0) { + setIsMobileSearchOpen(true); + } + }, [filtersCount, isCollapsibleHomeSearch]); return (
@@ -601,132 +610,166 @@ export default function FacilitySearch({
-

- {variant === "home" ? "Søk golfbaner" : "Filtrer oversikten"} -

+ {isCollapsibleHomeSearch ? ( + <> + +
+

Søk golfbaner

+
+ + ) : ( +

Filtrer oversikten

+ )}
-
- {!fixedAreaFilter && ( - - {areaOptions.map((option) => ( -
diff --git a/frontend/src/app/HeroSlider.tsx b/frontend/src/app/HeroSlider.tsx index b3f823a..f97e5bb 100755 --- a/frontend/src/app/HeroSlider.tsx +++ b/frontend/src/app/HeroSlider.tsx @@ -189,18 +189,22 @@ export default function HeroSlider({
-
-

- TeeOff.no gir deg komplett oversikt over - - ALLE - - norske golfbaner! +
+

+ TeeOff.no gir deg komplett oversikt + + over + over + + ALLE + + norske golfbaner! +

diff --git a/frontend/src/app/turneringer/page.tsx b/frontend/src/app/turneringer/page.tsx index 3a7535c..ee942cd 100644 --- a/frontend/src/app/turneringer/page.tsx +++ b/frontend/src/app/turneringer/page.tsx @@ -12,6 +12,7 @@ export const dynamic = "force-dynamic"; const articleSlug = "note-to-self-lenker-til-viktige-turneringer-i-golfbox"; const pageTitle = "Turneringer"; +const pageIntro = "Her er alle turneringene vi ikke vet hvordan vi skal finne i Golfbox (og andre steder). God golfsesong!"; function renderBlock(block: CourseVisitBodyBlock, index: number) { if (block.type !== "richText") { return null; @@ -70,7 +71,7 @@ export default async function TournamentsPage() { type="application/ld+json" dangerouslySetInnerHTML={{ __html: JSON.stringify(breadcrumbJsonLd) }} /> - +
{article.blocks.map((block, index) => renderBlock(block, index))} diff --git a/frontend/src/components/InfoPageShell.tsx b/frontend/src/components/InfoPageShell.tsx index c6c885e..bfd3c2a 100644 --- a/frontend/src/components/InfoPageShell.tsx +++ b/frontend/src/components/InfoPageShell.tsx @@ -3,11 +3,13 @@ import type { ReactNode } from "react"; type InfoPageShellProps = { eyebrow: string; title: string; - intro: string; + intro?: string; children: ReactNode; }; export default function InfoPageShell({ eyebrow, title, intro, children }: InfoPageShellProps) { + const normalizedIntro = String(intro || "").trim(); + return (
@@ -16,7 +18,9 @@ export default function InfoPageShell({ eyebrow, title, intro, children }: InfoP {eyebrow}

{title}

-

{intro}

+ {normalizedIntro ? ( +

{normalizedIntro}

+ ) : null}
diff --git a/frontend/src/content/importedMeninger.json b/frontend/src/content/importedMeninger.json index 1f95cfa..38f19a2 100644 --- a/frontend/src/content/importedMeninger.json +++ b/frontend/src/content/importedMeninger.json @@ -510,9 +510,9 @@ "link": "https://teeoff.no/meninger/note-to-self-lenker-til-viktige-turneringer-i-golfbox/", "title": "Lenker til viktige turneringer i Golfbox", "titleHtml": "Lenker til viktige turneringer i Golfbox", - "excerpt": "Her er alle turneringene vi ikke vet hvordan vi skal finne i Golfbox (og andre steder). God golfsesong! Narvesen Tour Region Midt Region Vestland Region Rogaland Region Sør Region Viken Vest Region Innlandet Region Nord-Norge Srixon Tour Srixon Tour Callaway – Østlandstour Callaway – Østlandstour Garmin Norgescup Garmin Norgescup Nordic Golf League Nordic Golf League…", - "excerptHtml": "

Her er alle turneringene vi ikke vet hvordan vi skal finne i Golfbox (og andre steder). God golfsesong! Narvesen Tour Region Midt Region Vestland Region Rogaland Region Sør Region Viken Vest Region Innlandet Region Nord-Norge Srixon Tour Srixon Tour Callaway – Østlandstour Callaway – Østlandstour Garmin Norgescup Garmin Norgescup Nordic Golf League Nordic Golf League…

\n", - "contentHtml": "\n\n\t

Her er alle turneringene vi ikke vet hvordan vi skal finne i Golfbox (og andre steder).

\n

God golfsesong!

\n\t

Narvesen Tour

\n\n

Srixon Tour

\n\n

Callaway – Østlandstour

\n\n

Garmin Norgescup

\n\n

Nordic Golf League

\n\n

NM

\n\n

Lag-NM

\n\n

Øvrige forbundsturneringer

\n\n\t

Norsk Senior Golf

\n\n

Golfhäftet

\n\n

Norsk MidAm

\n\n

Åpne turneringer på Sørlandet

\n\n

Region Nord-Norge (med NNM)

\n\n

Tour de Golf

\n\n

International Pairs (tidligere Nordea Pairs)

\n\n

\n

(Ytterligere en ting som er fint å få unnagjort før sesongen starter…)

\n

-Det er forresten bare å gi beskjed dersom det er noen regionale eller nasjonale oversikter som mangler her!

\n

Bonus

\n

Norges Golfforbund har også klart å gjemme bort nyhetene sine. De kan finnes her.

\n\n", + "excerpt": "", + "excerptHtml": "", + "contentHtml": "\n\n\t

Her er alle turneringene vi ikke vet hvordan vi skal finne i Golfbox (og andre steder).

\n

God golfsesong!

\n\t

Narvesen Tour

\n \n

Srixon Tour

\n \n

Callaway – Østlandstour

\n \n

Garmin Norgescup

\n \n

Nordic Golf League

\n \n

NM

\n \n

Lag-NM

\n \n

Øvrige forbundsturneringer

\n \n\t

Norsk Senior Golf

\n \n

Golfamore

\n \n

Åpne turneringer på Sørlandet

\n \n

Region Nord-Norge (med NNM)

\n \n

\n

(Ytterligere en ting som er fint å få unnagjort før sesongen starter…)

\n

-Det er forresten bare å gi beskjed dersom det er noen regionale eller nasjonale oversikter som mangler her!

\n

Bonus

\n

Norges Golfforbund har også klart å gjemme bort nyhetene sine. De kan finnes her.

\n\n", "publishedAt": "2019-03-17T07:00:27", "updatedAt": "2024-08-18T10:45:18", "author": {