<title>{{ title|default('Klaravik') }}</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="keywords" content="{{ keywords|default('')|escape }}">
<meta name="description" content="{{ description|default('')|escape }}">
{# Canonical URL - prevents duplicate content issues #}
{# Include curpage parameter in canonical URL when pagination exists #}
{% set baseCanonical = canonicalUrl|default(app.request.schemeAndHttpHost ~ app.request.pathInfo) %}
{% set curpage = app.request.query.get('curpage') %}
{% if curpage and curpage > 1 %}
{% set canonicalWithPage = baseCanonical ~ '?curpage=' ~ curpage %}
{% else %}
{% set canonicalWithPage = baseCanonical %}
{% endif %}
<link rel="canonical" href="{{ canonicalWithPage }}" />
{% if app.request.attributes.get('requestParams').page is defined and app.request.attributes.get('requestParams').page is same as 'vendor' %}
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0, viewport-fit=cover" />
{% else %}
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=10, user-scalable=1, viewport-fit=cover">
{% endif %}
<meta name="format-detection" content="telephone=no" />
{# Open Graph Meta Tags #}
<meta property="og:title" content="{{ shortTitle|default(title|default('Klaravik')) }}" />
<meta property="og:type" content="{{ ogType|default('website') }}" />
<meta property="og:url" content="{{ canonicalWithPage }}" />
<meta property="og:description" content="{{ description|default('')|escape }}" />
<meta property="og:site_name" content="Klaravik" />
<meta property="og:locale" content="{{ app.request.locale|default('sv_SE') }}" />
{% if products_id is defined and products_id is not empty %}
<meta property="og:image" content="{{ ogImage }}" />
<meta property="og:image:width" content="900" />
<meta property="og:image:height" content="675" />
<meta property="og:image:alt" content="{{ shortTitle|default('')|escape }}" />
{% elseif ogImage is defined and ogImage is not empty %}
<meta property="og:image" content="{{ ogImage }}"/>
<meta property="og:image:width" content="200" />
<meta property="og:image:height" content="200" />
{% else %}
<meta property="og:image" content="{{ app.request.schemeAndHttpHost }}/images/klaravik-og-default.png" />
<meta property="og:image:width" content="1200" />
<meta property="og:image:height" content="630" />
{% endif %}
{# Twitter Card Meta Tags #}
<meta name="twitter:card" content="{{ twitterCardType|default('summary_large_image') }}" />
<meta name="twitter:title" content="{{ shortTitle|default(title|default('Klaravik')) }}" />
<meta name="twitter:description" content="{{ description|default('')|escape }}" />
{% if products_id is defined and products_id is not empty %}
<meta name="twitter:image" content="{{ ogImage }}" />
<meta name="twitter:image:alt" content="{{ shortTitle|default('')|escape }}" />
{% elseif ogImage is defined and ogImage is not empty %}
<meta name="twitter:image" content="{{ ogImage }}" />
{% endif %}
{% if not constant('DEV_MODE') %}
<script type="text/JavaScript" data-cookieconsent="ignore">
window.addEventListener('CookiebotOnDialogInit', () => {
window.addEventListener('CookiebotOnAccept', () => {
location.reload()
})
})
</script>
{% endif %}
{# This script makes it possible to use Fontawesome Pro icons #}
<script src="https://kit.fontawesome.com/aa499cc0ce.js" crossorigin="anonymous"></script>
{# Slick Carousel CSS #}
<link rel="stylesheet" href="{{ getFileVersion('/css/slick.css') }}">
{# UI Tooltip CSS #}
<link rel="stylesheet" type="text/css" media="screen" href="{{ getFileVersion('/css/tool-tip.css') }}" />
{# TODO: use remixicon via NPM package when possible #}
<link rel="preload" href="/fonts/RemixIcon/remixicon.woff2" as="font" type="font/woff2" crossorigin>
<link rel="preload" href="/fonts/KlaravikSans/KlaravikSans-Light.woff2" as="font" type="font/woff2" crossorigin>
<link rel="preload" href="/fonts/KlaravikSans/KlaravikSans-Regular.woff2" as="font" type="font/woff2" crossorigin>
<link rel="preload" href="/fonts/KlaravikSans/KlaravikSans-SemiBold.woff2" as="font" type="font/woff2" crossorigin>
<link rel="preload" href="/fonts/KlaravikSans/KlaravikSans-Bold.woff2" as="font" type="font/woff2" crossorigin>
<link rel="preload" href="/fonts/KlaravikSans/KlaravikSans-ExtraBold.woff2" as="font" type="font/woff2" crossorigin>
<link rel="stylesheet" href="/fonts/RemixIcon/remixicon.css?v=1">
<link rel="stylesheet" type="text/css" href="/fonts/Authenia-Textured/stylesheet.css">
<link rel="stylesheet" type="text/css" media="screen" href="{{ getFileVersion('/css/foundation.css') }}" />
<link rel="stylesheet" type="text/css" media="screen" href="{{ getFileVersion('/css/uni-form.css') }}" />
<link rel="stylesheet" type="text/css" media="screen" href="{{ getFileVersion('/css/default.uni-form.css') }}" id="formStyle" />
{% if (currentPage is same as "auction" and products_id is defined) or currentPage is same as "vendor" %}
<link rel="stylesheet" type="text/css" media="all" href="{{ getFileVersion('/dist/css/fancybox.css') }}" />
<link rel="stylesheet" type="text/css" media="all" href="{{ getFileVersion('/dist/css/carousel.css') }}" />
{% endif %}
<link rel="stylesheet" type="text/css" media="all" href="{{ getFileVersion('/dist/css/stylesheet.css') }}" />
{# apple-touch-icon defines an icon for adding Klaravik to the homescreen for iPhone/iPad #}
<link rel="apple-touch-icon" sizes="80x80" href="/klaravik-web-icon-80x80.png">
<link rel="apple-touch-icon" sizes="120x120" href="/klaravik-web-icon-120x120.png">
<link rel="apple-touch-icon" sizes="152x152" href="/klaravik-web-icon-152x152.png">
<link rel="apple-touch-icon" sizes="167x167" href="/klaravik-web-icon-167x167.png">
<link rel="apple-touch-icon" sizes="180x180" href="/klaravik-web-icon-180x180.png">
<link rel="apple-touch-icon" sizes="192x192" href="/klaravik-web-icon-192x192.png">
<link rel="icon" type="image/png" href="{{ getFileVersion('/favicon-32x32.png') }}" sizes="32x32">
<link rel="icon" type="image/png" href="{{ getFileVersion('/favicon-16x16.png') }}" sizes="16x16">
{# Manifest link defines "add to homescreen" (PWA) attributes for Android #}
<link rel="mask-icon" href="/safari-pinned-tab.svg" color="#008540">
{% for css in includedCSS|default([]) %}
<link rel="stylesheet" type="text/css" media="{{ css["media"] }}" href="{{ getFileVersion(css["url"]) }}" />
{% endfor %}
{{ manifestAssets.renderCss() }}
<meta name="theme-color" content="#ffffff">
<style>
@media only screen and (max-width: 1024px) {
{# Label the data for mybids table #}
body .mybids td:nth-of-type(1):before { content: "{{ 'ALIAS_BUYER_TH_PRODUCT'|trans }}"; }
body .mybids td:nth-of-type(2):before { content: "{{ 'ALIAS_BUYER_TH_AUCTIONEND'|trans }}"; }
body .mybids td:nth-of-type(3):before { content: "{{ 'ALIAS_BUYER_TH_YOURMAXBID'|trans }}"; }
body .mybids td:nth-of-type(4):before { content: "{{ 'ALIAS_BUYER_TH_YOURBID'|trans }}"; }
body .mybids td:nth-of-type(5):before { content: "{{ 'ALIAS_BUYER_TH_HIGHBID'|trans }}"; }
body .mybids td:nth-of-type(6):before { content: "{{ 'ALIAS_BUYER_TH_RESPRICE'|trans }}"; }
body .mybids td:nth-of-type(7):before { content: "{{ 'ALIAS_BUYER_TH_STATUS'|trans }}"; }
{# Label the data for myorders table #}
body .myorders td:nth-of-type(1):before { content: "{{ 'ALIAS_BUYER_TH_PRODUCT'|trans }}"; }
body .myorders td:nth-of-type(2):before { content: "{{ 'ALIAS_BUYER_TH_AUCTIONEND'|trans }}"; }
body .myorders td:nth-of-type(3):before { content: "{{ 'ALIAS_BUYER_TH_YOURMAXBID'|trans }}"; }
body .myorders td:nth-of-type(4):before { content: "{{ 'ALIAS_BUYER_TH_YOURBID'|trans }}"; }
body .myorders td:nth-of-type(5):before { content: "{{ 'ALIAS_BUYER_TH_HIGHBID'|trans }}"; }
body .myorders td:nth-of-type(6):before { content: "{{ 'ALIAS_BUYER_TH_RESPRICE'|trans }}"; }
body .myorders td:nth-of-type(7):before { content: "{{ 'ALIAS_BUYER_TH_INVOICE'|trans }}"; }
body .myorders td:nth-of-type(8):before { content: "{{ 'ALIAS_BUYER_TH_PAYMENT'|trans }}"; }
body .myorders td:nth-of-type(9):before { content: "{{ 'ALIAS_BUYER_TH_RECIEPT'|trans }}"; }
body .myorders td:nth-of-type(10):before { content: "{{ 'info_label_app-index_myorders-object-picked-up'|trans }}"; }
}
</style>
{# Google Tag Manager #}
{% if GTM_SERVERSIDE is defined and GTM_SERVERSIDE %}
<script>
(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s);j.async=true;j.src=
"https://load.ss.klaravik.se/6ksghucrnc.js?"+i;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','3pab=CgpPJCElSiNVPSRRTSRBBV5cXFJTDAlOCAITERQeDhhNHRc%3D');
</script>
{% elseif GTM_ID is defined and GTM_ID is not empty %}
<script>
(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer', '{{ GTM_ID }}');
</script>
{% endif %}
{# End Google Tag Manager #}
<script src="https://challenges.cloudflare.com/turnstile/v0/api.js" async defer></script>
{# Structured Data (JSON-LD) for SEO/AIO #}
{# On product pages, we skip Organization schema (product location differs from Klaravik HQ) #}
{# Product pages output their own Product, Breadcrumb, and Event schemas #}
{# Note: Address intentionally omitted as auction items are not at Klaravik's physical location #}
{# Contact info comes from centralized .env configuration #}
{% set instance = instance|default('se') %}
{% set isProductPage = products_id is defined and products_id is not empty %}
{% if not isProductPage %}
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "Organization",
"name": "Klaravik",
"url": "{{ app.request.schemeAndHttpHost }}",
"logo": {
"@type": "ImageObject",
"url": "{{ app.request.schemeAndHttpHost }}/images/klaravik-logo.svg",
"width": 200,
"height": 60
},
{% if instance == 'se' %}
"description": "Klaravik är Skandinaviens ledande onlineauktionshus för begagnade maskiner, fordon och utrustning.",
"sameAs": [
"https://www.facebook.com/Klaravik.se",
"https://www.linkedin.com/company/klaravikab/",
"https://www.instagram.com/klaravik.se/"
]
{% elseif instance == 'dk' %}
"description": "Klaravik er Skandinaviens førende online auktionshus for brugte maskiner, køretøjer og udstyr.",
"sameAs": [
"https://www.facebook.com/klaraviknetauktion",
"https://www.linkedin.com/company/klaravik-danmark/",
"https://www.instagram.com/klaravik.dk/"
]
{% endif %}
{% if contactPhone is defined and contactEmail is defined %}
,"contactPoint": {
"@type": "ContactPoint",
"telephone": "{{ contactPhone }}",
"contactType": "customer service",
"email": "{{ contactEmail }}",
"availableLanguage": {% if instance == 'se' %}["Swedish", "English"]{% elseif instance == 'dk' %}["Danish", "English"]{% else %}["English"]{% endif %}
}
{% endif %}
},
{
"@type": "WebSite",
"name": "Klaravik",
"url": "{{ app.request.schemeAndHttpHost }}",
"potentialAction": {
"@type": "SearchAction",
"target": {
"@type": "EntryPoint",
"urlTemplate": "{{ url('app.legacy.auction.listing') }}?q={search_term_string}"
},
"query-input": "required name=search_term_string"
}
}
]
}
</script>
{% endif %}