From 206d31d9c2b3b689e89e6cac5271fad5bebb247e Mon Sep 17 00:00:00 2001 From: Linus Olofsson Date: Tue, 27 Oct 2026 19:13:07 +0100 Subject: [PATCH] feat(content): Swedish copy, new /tjanster page with booking flow and FAQ - New /tjanster: genres from existing copy, where/price (contact for offer while unknown), booking flow via customer portal, delivery in a private gallery, originals after payment, FAQ (also emitted as FAQPage). - Homepage: tagline + text section on who/what/where/how to book. - About: Swedish, photographer framing instead of "by day/by night", Adobe line. Contact: Swedish, plain mailto info@, booking CTA, fixed unclosed div. Privacy: Swedish (Google Limited Use line kept in English). - Unique Swedish title and description per page; scripts moved inside the layout (no - - \ No newline at end of file diff --git a/src/pages/index.astro b/src/pages/index.astro index 4bfaa5a..ca07661 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -3,9 +3,14 @@ import MainLayout from '../layouts/MainLayout.astro'; import ThreeDScroll from '../components/ThreeDScroll.astro'; import WaveBackground from '../components/WaveBackground.astro'; +import { business, basedIn, genreList } from '../data/business'; --- - +
@@ -38,7 +43,8 @@ import WaveBackground from '../components/WaveBackground.astro';
-

↓

+

Fotograf {business.person.name} · {basedIn()}

+ @@ -52,14 +58,14 @@ import WaveBackground from '../components/WaveBackground.astro'; + +
+
+
+

Fotograf {business.person.name}

+

+ Jag heter {business.person.name} och fotograferar under namnet {business.brand}. + Jag är baserad i {basedIn()} och fotograferar {genreList()}. +

+

{business.recognition}

+

+ Jag fotograferar med en {business.camera} och redigerar i {business.editing}, med fokus på naturliga toner och kontrast. +

+

+ Mer om mig + Portfolio + {business.email} +

+
+ +
+

Så bokar du

+
    + {business.bookingSteps.map((step, i) => ( +
  1. + {i + 1} + {step.title}. {step.text} +
  2. + ))} +
+ +
+
+
+ + +
- - \ No newline at end of file diff --git a/src/pages/privacy.astro b/src/pages/privacy.astro index 3d0d212..916f5e5 100644 --- a/src/pages/privacy.astro +++ b/src/pages/privacy.astro @@ -2,89 +2,102 @@ // src/pages/privacy.astro import MainLayout from '../layouts/MainLayout.astro'; import WaveBackground from '../components/WaveBackground.astro'; +import { business } from '../data/business'; + +const link = 'text-white underline hover:text-gray-300'; --- - +
-

Privacy Policy

-

Last updated: 25 October 2026

+

Integritetspolicy

+

Senast uppdaterad: 27 oktober 2026

-

Who is responsible

+

Vem som är ansvarig

- Images by Olofsson is run by Linus Olofsson, Sweden. Questions about privacy: - Admin@imagesbyolofsson.se. + {business.brand} drivs av {business.person.name}, {business.country.name}. Frågor om integritet: + {business.email}.

-

This website

+

Den här webbplatsen

    -
  • There are no user accounts and no contact forms.
  • -
  • If you email me, your address and message are used only to answer you and are not shared with anyone.
  • -
  • Password-protected galleries keep the password only in your open browser tab; it is not stored after you close it.
  • +
  • Det finns inga användarkonton och inga kontaktformulär på den här webbplatsen. Bokningar görs i den separata kundportalen.
  • +
  • Om du mejlar mig används din adress och ditt meddelande bara för att svara dig och delas inte med någon.
  • +
  • Lösenordsskyddade nedladdningar sparar lösenordet bara i din öppna webbläsarflik; det finns inte kvar när du stänger den.
  • - The site is delivered through Cloudflare, which processes technical data such as your IP address to deliver - and protect the site. See Cloudflare's privacy policy. + Webbplatsen levereras via Cloudflare, som behandlar tekniska uppgifter som din IP-adress för att leverera + och skydda webbplatsen. Se Cloudflares integritetspolicy.
  • -
  • If you appear in one of my photos and want it removed, email me and I will take it down.
  • +
  • Om du syns på någon av mina bilder och vill att den tas bort, mejla mig så tar jag bort den.
-

Meta Pixel (only with your consent)

+

Meta Pixel (bara med ditt samtycke)

- If you click "Accept" in the cookie box, the site loads the Meta Pixel from Meta Platforms Ireland Ltd. - I use it to see how visitors coming from my Instagram and Facebook use the site. + Om du klickar på ”Godkänn” i cookierutan laddar webbplatsen Meta Pixel från Meta Platforms Ireland Ltd. + Jag använder den för att se hur besökare som kommer från mitt Instagram och Facebook använder webbplatsen.

    -
  • It sets cookies (such as _fbp) and sends Meta information like the pages you visit, your IP address and browser details.
  • -
  • Meta may link this to your Facebook or Instagram account and may transfer data outside the EU. See - Meta's privacy policy.
  • -
  • If you click "Decline" or do nothing, the pixel is never loaded.
  • -
  • You can change your choice at any time via "Cookie settings" at the bottom of every page. Your choice is stored in your own browser.
  • +
  • Den sätter cookies (till exempel _fbp) och skickar uppgifter till Meta, som vilka sidor du besöker, din IP-adress och information om din webbläsare.
  • +
  • Meta kan koppla detta till ditt Facebook- eller Instagramkonto och kan föra över uppgifter utanför EU. Se + Metas integritetspolicy.
  • +
  • Om du klickar på ”Avböj” eller inte gör något laddas pixeln aldrig.
  • +
  • Du kan ändra ditt val när som helst via ”Cookie-inställningar” längst ner på varje sida. Ditt val sparas i din egen webbläsare.
-

Anonymous portfolio statistics

+

Anonym statistik för portfolion

- To see which photos people like, the portfolio counts how many times each photo is opened or downloaded, per day. - Only the count is stored, on my own server in Sweden. No cookies, no IP address, no browser details and nothing - that could identify you. This happens without consent because nothing about you is collected. + För att se vilka bilder som uppskattas räknar portfolion hur många gånger varje bild öppnas eller laddas ner, per dag. + Bara antalet sparas, på min egen server i Sverige. Inga cookies, ingen IP-adress, ingen webbläsarinformation och inget + som kan identifiera dig. Det sker utan samtycke eftersom inga uppgifter om dig samlas in.

-

Photo backup app (Google)

+

App för säkerhetskopiering av bilder (Google)

- "townhouse-backup" is a private tool used only by me to back up my own photos to my own Google account. + ”townhouse-backup” är ett privat verktyg som bara jag använder för att säkerhetskopiera mina egna bilder till mitt eget Google-konto.

    -
  • Google Drive: it only accesses files it has created itself (a backup copy of my photo archive).
  • -
  • Google Photos: it only uploads my photos and adds them to albums it created; it cannot see anything else in the library.
  • -
  • No data from anyone else is collected. Nothing is sold, shared with third parties, used for advertising or used to train AI models.
  • +
  • Google Drive: verktyget kommer bara åt filer som det själv har skapat (en säkerhetskopia av mitt bildarkiv).
  • +
  • Google Foto: verktyget laddar bara upp mina bilder och lägger dem i album som det själv har skapat; det kan inte se något annat i biblioteket.
  • +
  • Inga uppgifter om någon annan samlas in. Ingenting säljs, delas med tredje part, används för reklam eller används för att träna AI-modeller.
  • - Its use of information received from Google APIs adheres to the - Google API Services User Data Policy, - including the Limited Use requirements. + Verktygets användning av information från Googles API:er följer + Google API Services User Data Policy, + inklusive kraven på begränsad användning (Limited Use).
+

+ In English: townhouse-backup's use of information received from Google APIs adheres to the + Google API Services User Data Policy, + including the Limited Use requirements. +

-

Your rights

+

Dina rättigheter

- Under the GDPR you can ask what personal data I hold about you, and have it corrected or deleted — just email me. - You can also complain to the Swedish Authority for Privacy Protection - (IMY). + Enligt GDPR kan du fråga vilka personuppgifter jag har om dig och få dem rättade eller raderade – mejla mig bara. + Du kan också klaga hos Integritetsskyddsmyndigheten + (IMY).

diff --git a/src/pages/tjanster.astro b/src/pages/tjanster.astro new file mode 100644 index 0000000..0142fc1 --- /dev/null +++ b/src/pages/tjanster.astro @@ -0,0 +1,127 @@ +--- +// src/pages/tjanster.astro +// Vad Linus fotograferar, för vem, var, pris, leverans och hur man bokar + FAQ. +// Allt från src/data/business.ts och src/data/faq.ts – okända fakta visas inte. +import MainLayout from '../layouts/MainLayout.astro'; +import WaveBackground from '../components/WaveBackground.astro'; +import { business, basedIn, formatSek } from '../data/business'; +import { faq } from '../data/faq'; +import heroImg from '../assets/images/3d-scroll/img2.jpg'; + +const priceFrom = formatSek(business.priceFromSek); +const packages = business.packages ?? []; +const portalHost = new URL(business.portal.url).host; +--- + + + + +
+ +
+

Tjänster och bokning

+

+ Jag heter {business.person.name} och är fotografen bakom {business.brand}, baserad i {basedIn()}. + Här ser du vad jag fotograferar, hur en bokning går till och hur du får dina bilder. +

+ +
+ +
+

Det här fotograferar jag

+
    + {business.genres.map((g) => ( +
  • +

    {g.name}

    +

    {g.description}

    +
  • + ))} +
+

+ Se exempel i min portfolio. + Har du något annat i tankarna? Beskriv det i din förfrågan, så återkommer jag med ett förslag. +

+
+ +
+
+

Var

+ {business.serviceArea ? ( +

Jag utgår från {basedIn()} och tar uppdrag i {business.serviceArea}.

+ ) : ( +

Jag är baserad i {basedIn()}. Kontakta mig så stämmer vi av om jag kan fotografera där du befinner dig.

+ )} +
+
+

Pris

+ {priceFrom ? ( +

Fotografering från {priceFrom}. Det slutliga priset står i offerten.

+ ) : ( +

Priset beror på uppdraget. Kontakta mig eller skicka en förfrågan, så får du en offert för just det du vill ha fotograferat.

+ )} + {packages.length > 0 && ( +
    + {packages.map((p) => ( +
  • + {p.name} + {formatSek(p.priceSek) && – {formatSek(p.priceSek)}} + {p.includes.length > 0 && {p.includes.join(', ')}} +
  • + ))} +
+ )} +
+
+ +
+

Så går en bokning till

+
    + {business.bookingSteps.map((step, i) => ( +
  1. + {i + 1} +
    +

    {step.title}

    +

    {step.text}

    +
    +
  2. + ))} +
+

+ Leverans: bilderna levereras i ett privat galleri i kundportalen + ({portalHost}).{business.deliveryTime && ` Normal leveranstid är ${business.deliveryTime}.`} +

+ Skicka en förfrågan i kundportalen +
+ +
+

Vanliga frågor

+
+ {faq.map((item) => ( +
+ +

{item.question}

+ +
+

{item.answer}

+
+ ))} +
+

+ Fler frågor? Mejla {business.email} + eller skriv på Instagram {business.social.instagram.handle}. +

+
+ +
+