spoko-design-system 0.7.6 → 0.7.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.astro/data-store.json +1 -1
- package/.astro/settings.json +4 -4
- package/.astro/types.d.ts +1 -0
- package/.github/dependabot.yml +11 -11
- package/.github/todo.yml +3 -3
- package/.github/workflows/deploy.yml +39 -39
- package/.stackblitzrc +5 -5
- package/.vscode/extensions.json +5 -5
- package/.vscode/launch.json +11 -11
- package/.vscode/settings.json +5 -5
- package/LICENSE +21 -21
- package/README.md +114 -114
- package/astro-i18next.config.mjs +17 -17
- package/astro-i18next.config.ts +10 -10
- package/astro.config.mjs +86 -86
- package/dev-dist/sw.js +91 -91
- package/dev-dist/workbox-c676b6d3.js +3391 -3391
- package/icon.config.ts +309 -309
- package/index.ts +66 -66
- package/package.json +17 -17
- package/public/fonts/lg.svg +53 -53
- package/public/fonts/vwhead-bold-demo.html +549 -549
- package/public/fonts/vwhead-regular-demo.html +549 -549
- package/public/fonts/vwtext-bold-demo.html +549 -549
- package/public/fonts/vwtext-regular-demo.html +549 -549
- package/public/github.svg +3 -3
- package/public/grid_dot.svg +4 -4
- package/public/linkedin.svg +44 -44
- package/public/locales/en/translation.json +8 -8
- package/public/locales/pl/translation.json +8 -8
- package/public/make-scrollable-code-focusable.js +3 -3
- package/public/pagefind.yml +3 -3
- package/public/polo.blue.svg +29 -29
- package/public/spoko.space.svg +71 -71
- package/public/twitter.svg +46 -46
- package/renovate.json +6 -6
- package/sandbox.config.json +11 -11
- package/src/MyComponent.astro +8 -8
- package/src/components/Badge.vue +19 -19
- package/src/components/Badges.vue +21 -21
- package/src/components/Breadcrumbs.vue +107 -107
- package/src/components/Button.vue +101 -101
- package/src/components/ButtonCopy.astro +183 -183
- package/src/components/ButtonCopy.vue +36 -36
- package/src/components/Card.astro +27 -27
- package/src/components/Carousel.astro +26 -26
- package/src/components/Category/CategoriesCarousel.astro +101 -101
- package/src/components/Category/CategoryDetails.astro +169 -169
- package/src/components/Category/CategoryLink.vue +28 -28
- package/src/components/Category/CategorySidebarToggler.vue +9 -9
- package/src/components/Category/CategoryTile.astro +37 -37
- package/src/components/Category/CategoryViewToggler.astro +89 -89
- package/src/components/Category/SubCategoryLink.vue +19 -19
- package/src/components/Copyright.astro +12 -12
- package/src/components/Date.astro +7 -7
- package/src/components/Faq.astro +33 -33
- package/src/components/FaqItem.astro +80 -80
- package/src/components/FeaturesList.vue +41 -41
- package/src/components/FuckRussia.vue +62 -62
- package/src/components/HandDrive.astro +29 -29
- package/src/components/Header/Header.astro +210 -210
- package/src/components/Header/SkipToContent.astro +1 -1
- package/src/components/Headline.vue +48 -48
- package/src/components/Image.astro +30 -30
- package/src/components/LeftSidebar.astro +53 -53
- package/src/components/MainColors.vue +22 -22
- package/src/components/MainInput.vue +15 -15
- package/src/components/Modal.astro +27 -27
- package/src/components/PageContent.astro +5 -5
- package/src/components/PartNumber.vue +27 -27
- package/src/components/Post/PostCategories.astro +41 -41
- package/src/components/Post/PostCategories.vue +39 -39
- package/src/components/PostHeader.astro +103 -103
- package/src/components/PrCode.vue +141 -141
- package/src/components/Product/ProductButton.vue +18 -18
- package/src/components/Product/ProductCarousel.astro +35 -35
- package/src/components/Product/ProductCodes.vue +174 -174
- package/src/components/Product/ProductEngineType.vue +42 -42
- package/src/components/Product/ProductImage.astro +40 -40
- package/src/components/Product/ProductLink.astro +101 -101
- package/src/components/Product/ProductLink.vue +59 -59
- package/src/components/Product/ProductLinkInfo.astro +37 -37
- package/src/components/Product/ProductNumber.astro +60 -60
- package/src/components/ProductCarousel.astro +38 -38
- package/src/components/ProductCodes.vue +39 -39
- package/src/components/ProductDetailName.vue +52 -52
- package/src/components/ProductDetailsList.vue +157 -157
- package/src/components/ProductTile.astro +48 -48
- package/src/components/Quote.vue +23 -23
- package/src/components/ReloadPrompt.astro +50 -50
- package/src/components/SlimBanner.vue +72 -72
- package/src/components/Table.vue +32 -32
- package/src/components/TableOfContents.astro +15 -15
- package/src/components/Translations.vue +23 -23
- package/src/components/flags/FlagPL.vue +3 -3
- package/src/components/flags/FlagUA.vue +2 -2
- package/src/components/layout/Container.astro +7 -7
- package/src/components/layout/Header.astro +80 -80
- package/src/config.ts +56 -56
- package/src/design.config.ts +98 -98
- package/src/env.d.ts +6 -6
- package/src/layouts/Layout.astro +61 -61
- package/src/layouts/MainLayout.astro +81 -81
- package/src/layouts/partials/FooterCommon.astro +4 -4
- package/src/layouts/partials/HeadCommon.astro +44 -44
- package/src/layouts/partials/HeadSEO.astro +41 -41
- package/src/pages/components/badges.mdx +57 -57
- package/src/pages/components/breadcrumbs.mdx +139 -139
- package/src/pages/components/buttons.mdx +360 -360
- package/src/pages/components/card.mdx +294 -294
- package/src/pages/components/carousel.mdx +62 -62
- package/src/pages/components/copyright.mdx +42 -42
- package/src/pages/components/details-list.mdx +115 -115
- package/src/pages/components/features-list.mdx +37 -37
- package/src/pages/components/flags.mdx +49 -49
- package/src/pages/components/fuck-russia.mdx +39 -39
- package/src/pages/components/hand-drive.mdx +38 -38
- package/src/pages/components/headline.mdx +152 -152
- package/src/pages/components/icons.astro +135 -135
- package/src/pages/components/image.mdx +513 -513
- package/src/pages/components/input.mdx +367 -367
- package/src/pages/components/jumbotron.mdx +359 -359
- package/src/pages/components/modal.mdx +64 -64
- package/src/pages/components/post-header.mdx +64 -64
- package/src/pages/components/pr-code.mdx +65 -65
- package/src/pages/components/product-number.mdx +58 -58
- package/src/pages/components/product-tile.mdx +51 -51
- package/src/pages/components/quote.mdx +33 -33
- package/src/pages/components/slimbanner.mdx +35 -35
- package/src/pages/components/table.mdx +108 -108
- package/src/pages/core/colors.mdx +10 -10
- package/src/pages/core/grid.mdx +89 -89
- package/src/pages/core/introduction.mdx +77 -77
- package/src/pages/core/shadows.astro +20 -20
- package/src/pages/core/typography.astro +49 -49
- package/src/pages/index.astro +133 -133
- package/src/pages/patterns/introduction.mdx +60 -60
- package/src/pwa.ts +12 -12
- package/src/styles/_variables.scss +70 -70
- package/src/styles/base/base.css +184 -184
- package/src/styles/base/grid.css +92 -92
- package/src/styles/base/typography.css +70 -70
- package/src/styles/content.css +73 -73
- package/src/styles/main.css +7 -7
- package/src/types/Product.ts +31 -31
- package/src/types/astro.d.ts +3 -3
- package/src/utils/product/getPriceFormatted.ts +15 -15
- package/src/utils/product/getProductChecklist.ts +17 -17
- package/src/utils/product/useFormatProductNumber.ts +41 -41
- package/src/utils/seo/getShorterDescription.ts +14 -14
- package/src/utils/text/formatDate.ts +5 -5
- package/src/utils/text/formatLocaleNumber.ts +6 -6
- package/src/utils/text/formatPad.ts +12 -12
- package/src/utils/text/getNumberFormatted.ts +33 -33
- package/src/utils/text/getTranslatedLink.ts +5 -5
- package/src/utils/text.ts +19 -19
- package/tailwind.config.cjs +8 -8
- package/tsconfig.json +28 -28
- package/uno-config/index.ts +249 -232
- package/uno-config/theme/breakpoints.ts +9 -9
- package/uno-config/theme/colors.ts +64 -64
- package/uno-config/theme/dimensions.ts +17 -17
- package/uno-config/theme/effects.ts +14 -14
- package/uno-config/theme/grid.ts +10 -10
- package/uno-config/theme/index.ts +28 -28
- package/uno-config/theme/shortcuts/buttons.ts +53 -53
- package/uno-config/theme/shortcuts/components.ts +92 -92
- package/uno-config/theme/shortcuts/index.ts +20 -20
- package/uno-config/theme/shortcuts/layout.ts +64 -64
- package/uno-config/theme/typography.ts +29 -29
- package/uno.config.ts +2 -2
|
@@ -1,44 +1,44 @@
|
|
|
1
|
-
---
|
|
2
|
-
import { ViewTransitions } from "astro:transitions";
|
|
3
|
-
import { pwaInfo } from 'virtual:pwa-info';
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
<!-- Global Metadata -->
|
|
7
|
-
<meta charset="utf-8" />
|
|
8
|
-
<meta name="viewport" content="width=device-width" />
|
|
9
|
-
|
|
10
|
-
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
|
11
|
-
<link rel="alternate icon" type="image/x-icon" href="/favicon.ico" />
|
|
12
|
-
|
|
13
|
-
<link rel="sitemap" href="/sitemap-index.xml" />
|
|
14
|
-
|
|
15
|
-
<!-- Preload Fonts -->
|
|
16
|
-
<!-- <link rel="preconnect" href="https://fonts.googleapis.com" />
|
|
17
|
-
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
|
18
|
-
<link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:ital@0;1&display=swap" rel="stylesheet" /> -->
|
|
19
|
-
|
|
20
|
-
<!-- Scrollable a11y code helper -->
|
|
21
|
-
<script src="/make-scrollable-code-focusable.js" is:inline></script>
|
|
22
|
-
|
|
23
|
-
<!-- This is intentionally inlined to avoid FOUC -->
|
|
24
|
-
<script is:inline>
|
|
25
|
-
// const root = document.documentElement;
|
|
26
|
-
// const theme = localStorage.getItem('theme');
|
|
27
|
-
// if (theme === 'dark' || (!theme && window.matchMedia('(prefers-color-scheme: dark)').matches)) {
|
|
28
|
-
// root.classList.add('dark');
|
|
29
|
-
// } else {
|
|
30
|
-
// root.classList.remove('dark');
|
|
31
|
-
// }
|
|
32
|
-
</script>
|
|
33
|
-
|
|
34
|
-
<!-- Global site tag (gtag.js) - Google Analytics -->
|
|
35
|
-
<!-- <script async src="https://www.googletagmanager.com/gtag/js?id=" is:inline></script>
|
|
36
|
-
<script>
|
|
37
|
-
window.dataLayer = window.dataLayer || [];
|
|
38
|
-
function gtag(){dataLayer.push(arguments);}
|
|
39
|
-
gtag('js', new Date());
|
|
40
|
-
gtag('config', '');
|
|
41
|
-
</script> -->
|
|
42
|
-
|
|
43
|
-
<ViewTransitions />
|
|
44
|
-
{ pwaInfo && <Fragment set:html={pwaInfo.webManifest.linkTag} /> }
|
|
1
|
+
---
|
|
2
|
+
import { ViewTransitions } from "astro:transitions";
|
|
3
|
+
import { pwaInfo } from 'virtual:pwa-info';
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
<!-- Global Metadata -->
|
|
7
|
+
<meta charset="utf-8" />
|
|
8
|
+
<meta name="viewport" content="width=device-width" />
|
|
9
|
+
|
|
10
|
+
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
|
11
|
+
<link rel="alternate icon" type="image/x-icon" href="/favicon.ico" />
|
|
12
|
+
|
|
13
|
+
<link rel="sitemap" href="/sitemap-index.xml" />
|
|
14
|
+
|
|
15
|
+
<!-- Preload Fonts -->
|
|
16
|
+
<!-- <link rel="preconnect" href="https://fonts.googleapis.com" />
|
|
17
|
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
|
18
|
+
<link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:ital@0;1&display=swap" rel="stylesheet" /> -->
|
|
19
|
+
|
|
20
|
+
<!-- Scrollable a11y code helper -->
|
|
21
|
+
<script src="/make-scrollable-code-focusable.js" is:inline></script>
|
|
22
|
+
|
|
23
|
+
<!-- This is intentionally inlined to avoid FOUC -->
|
|
24
|
+
<script is:inline>
|
|
25
|
+
// const root = document.documentElement;
|
|
26
|
+
// const theme = localStorage.getItem('theme');
|
|
27
|
+
// if (theme === 'dark' || (!theme && window.matchMedia('(prefers-color-scheme: dark)').matches)) {
|
|
28
|
+
// root.classList.add('dark');
|
|
29
|
+
// } else {
|
|
30
|
+
// root.classList.remove('dark');
|
|
31
|
+
// }
|
|
32
|
+
</script>
|
|
33
|
+
|
|
34
|
+
<!-- Global site tag (gtag.js) - Google Analytics -->
|
|
35
|
+
<!-- <script async src="https://www.googletagmanager.com/gtag/js?id=" is:inline></script>
|
|
36
|
+
<script>
|
|
37
|
+
window.dataLayer = window.dataLayer || [];
|
|
38
|
+
function gtag(){dataLayer.push(arguments);}
|
|
39
|
+
gtag('js', new Date());
|
|
40
|
+
gtag('config', '');
|
|
41
|
+
</script> -->
|
|
42
|
+
|
|
43
|
+
<ViewTransitions />
|
|
44
|
+
{ pwaInfo && <Fragment set:html={pwaInfo.webManifest.linkTag} /> }
|
|
@@ -1,41 +1,41 @@
|
|
|
1
|
-
---
|
|
2
|
-
import { SITE, OPEN_GRAPH } from '../../config';
|
|
3
|
-
export interface Props {
|
|
4
|
-
content: any;
|
|
5
|
-
// site: any;
|
|
6
|
-
canonicalURL: URL | string;
|
|
7
|
-
}
|
|
8
|
-
const { content = {}, canonicalURL } = Astro.props;
|
|
9
|
-
const formattedContentTitle = content.title ? `${content.title} 🚀 ${SITE.title}` : SITE.title;
|
|
10
|
-
// const imageSrc = content?.image?.src ?? OPEN_GRAPH.image.src;
|
|
11
|
-
// const canonicalImageSrc = new URL(imageSrc, Astro.site);
|
|
12
|
-
const imageAlt = content?.image?.alt ?? OPEN_GRAPH.image.alt;
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
<!-- Page Metadata -->
|
|
16
|
-
<link rel="canonical" href={canonicalURL} />
|
|
17
|
-
|
|
18
|
-
<!-- OpenGraph Tags -->
|
|
19
|
-
<meta property="og:title" content={formattedContentTitle} />
|
|
20
|
-
<meta property="og:type" content="article" />
|
|
21
|
-
<meta property="og:url" content={canonicalURL} />
|
|
22
|
-
<meta property="og:locale" content={content.ogLocale ?? SITE.defaultLanguage} />
|
|
23
|
-
<!-- <meta property="og:image" content={canonicalImageSrc} /> -->
|
|
24
|
-
<meta property="og:image:alt" content={imageAlt} />
|
|
25
|
-
<meta name="description" property="og:description" content={content.description ? content.description : SITE.description} />
|
|
26
|
-
<meta property="og:site_name" content={SITE.title} />
|
|
27
|
-
|
|
28
|
-
<!-- Twitter Tags -->
|
|
29
|
-
<meta name="twitter:card" content="summary_large_image" />
|
|
30
|
-
<meta name="twitter:site" content={OPEN_GRAPH.twitter} />
|
|
31
|
-
<meta name="twitter:title" content={formattedContentTitle} />
|
|
32
|
-
<meta name="twitter:description" content={content.description ? content.description : SITE.description} />
|
|
33
|
-
<!-- <meta name="twitter:image" content={canonicalImageSrc} /> -->
|
|
34
|
-
<meta name="twitter:image:alt" content={imageAlt} />
|
|
35
|
-
|
|
36
|
-
<!--
|
|
37
|
-
TODO: Add json+ld data, maybe https://schema.org/APIReference makes sense?
|
|
38
|
-
Docs: https://developers.google.com/search/docs/advanced/structured-data/intro-structured-data
|
|
39
|
-
https://www.npmjs.com/package/schema-dts seems like a great resource for implementing this.
|
|
40
|
-
Even better, there's a Vue component that integrates with `schema-dts`: https://github.com/vueuse/schema-org
|
|
41
|
-
-->
|
|
1
|
+
---
|
|
2
|
+
import { SITE, OPEN_GRAPH } from '../../config';
|
|
3
|
+
export interface Props {
|
|
4
|
+
content: any;
|
|
5
|
+
// site: any;
|
|
6
|
+
canonicalURL: URL | string;
|
|
7
|
+
}
|
|
8
|
+
const { content = {}, canonicalURL } = Astro.props;
|
|
9
|
+
const formattedContentTitle = content.title ? `${content.title} 🚀 ${SITE.title}` : SITE.title;
|
|
10
|
+
// const imageSrc = content?.image?.src ?? OPEN_GRAPH.image.src;
|
|
11
|
+
// const canonicalImageSrc = new URL(imageSrc, Astro.site);
|
|
12
|
+
const imageAlt = content?.image?.alt ?? OPEN_GRAPH.image.alt;
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
<!-- Page Metadata -->
|
|
16
|
+
<link rel="canonical" href={canonicalURL} />
|
|
17
|
+
|
|
18
|
+
<!-- OpenGraph Tags -->
|
|
19
|
+
<meta property="og:title" content={formattedContentTitle} />
|
|
20
|
+
<meta property="og:type" content="article" />
|
|
21
|
+
<meta property="og:url" content={canonicalURL} />
|
|
22
|
+
<meta property="og:locale" content={content.ogLocale ?? SITE.defaultLanguage} />
|
|
23
|
+
<!-- <meta property="og:image" content={canonicalImageSrc} /> -->
|
|
24
|
+
<meta property="og:image:alt" content={imageAlt} />
|
|
25
|
+
<meta name="description" property="og:description" content={content.description ? content.description : SITE.description} />
|
|
26
|
+
<meta property="og:site_name" content={SITE.title} />
|
|
27
|
+
|
|
28
|
+
<!-- Twitter Tags -->
|
|
29
|
+
<meta name="twitter:card" content="summary_large_image" />
|
|
30
|
+
<meta name="twitter:site" content={OPEN_GRAPH.twitter} />
|
|
31
|
+
<meta name="twitter:title" content={formattedContentTitle} />
|
|
32
|
+
<meta name="twitter:description" content={content.description ? content.description : SITE.description} />
|
|
33
|
+
<!-- <meta name="twitter:image" content={canonicalImageSrc} /> -->
|
|
34
|
+
<meta name="twitter:image:alt" content={imageAlt} />
|
|
35
|
+
|
|
36
|
+
<!--
|
|
37
|
+
TODO: Add json+ld data, maybe https://schema.org/APIReference makes sense?
|
|
38
|
+
Docs: https://developers.google.com/search/docs/advanced/structured-data/intro-structured-data
|
|
39
|
+
https://www.npmjs.com/package/schema-dts seems like a great resource for implementing this.
|
|
40
|
+
Even better, there's a Vue component that integrates with `schema-dts`: https://github.com/vueuse/schema-org
|
|
41
|
+
-->
|
|
@@ -1,57 +1,57 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: "Badges"
|
|
3
|
-
layout: "../../layouts/MainLayout.astro"
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
import Badges from '../../components/Badges.vue'
|
|
7
|
-
|
|
8
|
-
# Product badges
|
|
9
|
-
Extra product badges (labels).
|
|
10
|
-
|
|
11
|
-
## Badges - GTI
|
|
12
|
-
<div class="component-preview">
|
|
13
|
-
<div class="relative min-h-19">
|
|
14
|
-
<Badges badges={['GTI', 'Motorsport', 'Lorem Ipsum']} class="top-2" />
|
|
15
|
-
</div>
|
|
16
|
-
</div>
|
|
17
|
-
|
|
18
|
-
```js
|
|
19
|
-
<div class="relative min-h-10">
|
|
20
|
-
<Badges badges={['GTI', 'Motorsport', 'Lorem Ipsum']} class="top-2" />
|
|
21
|
-
</div>
|
|
22
|
-
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
## Badge on image
|
|
27
|
-
<div class="component-preview">
|
|
28
|
-
<div class="relative">
|
|
29
|
-
<img src="https://placehold.co/300x200" alt="image alt" />
|
|
30
|
-
<Badges badges={['Motorsport']} class="top-2" />
|
|
31
|
-
</div>
|
|
32
|
-
</div>
|
|
33
|
-
|
|
34
|
-
```js
|
|
35
|
-
<div class="relative">
|
|
36
|
-
<img src="https://placehold.co/300x200" alt="image alt" />
|
|
37
|
-
<Badges badges={['Motorsport']} class="top-2" />
|
|
38
|
-
</div>
|
|
39
|
-
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
## Few badges on image
|
|
44
|
-
<div class="component-preview">
|
|
45
|
-
<div class="relative">
|
|
46
|
-
<img src="https://placehold.co/300x200" alt="image alt" />
|
|
47
|
-
<Badges badges={['Motorsport', 'Lorem ipsum', 'GTI']} class="top-2" />
|
|
48
|
-
</div>
|
|
49
|
-
</div>
|
|
50
|
-
|
|
51
|
-
```js
|
|
52
|
-
<div class="relative">
|
|
53
|
-
<img src="https://placehold.co/300x200" alt="image alt" />
|
|
54
|
-
<Badges badges={['Motorsport', 'Lorem ipsum', 'GTI']} class="top-2" />
|
|
55
|
-
</div>
|
|
56
|
-
|
|
57
|
-
```
|
|
1
|
+
---
|
|
2
|
+
title: "Badges"
|
|
3
|
+
layout: "../../layouts/MainLayout.astro"
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
import Badges from '../../components/Badges.vue'
|
|
7
|
+
|
|
8
|
+
# Product badges
|
|
9
|
+
Extra product badges (labels).
|
|
10
|
+
|
|
11
|
+
## Badges - GTI
|
|
12
|
+
<div class="component-preview">
|
|
13
|
+
<div class="relative min-h-19">
|
|
14
|
+
<Badges badges={['GTI', 'Motorsport', 'Lorem Ipsum']} class="top-2" />
|
|
15
|
+
</div>
|
|
16
|
+
</div>
|
|
17
|
+
|
|
18
|
+
```js
|
|
19
|
+
<div class="relative min-h-10">
|
|
20
|
+
<Badges badges={['GTI', 'Motorsport', 'Lorem Ipsum']} class="top-2" />
|
|
21
|
+
</div>
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
## Badge on image
|
|
27
|
+
<div class="component-preview">
|
|
28
|
+
<div class="relative">
|
|
29
|
+
<img src="https://placehold.co/300x200" alt="image alt" />
|
|
30
|
+
<Badges badges={['Motorsport']} class="top-2" />
|
|
31
|
+
</div>
|
|
32
|
+
</div>
|
|
33
|
+
|
|
34
|
+
```js
|
|
35
|
+
<div class="relative">
|
|
36
|
+
<img src="https://placehold.co/300x200" alt="image alt" />
|
|
37
|
+
<Badges badges={['Motorsport']} class="top-2" />
|
|
38
|
+
</div>
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
## Few badges on image
|
|
44
|
+
<div class="component-preview">
|
|
45
|
+
<div class="relative">
|
|
46
|
+
<img src="https://placehold.co/300x200" alt="image alt" />
|
|
47
|
+
<Badges badges={['Motorsport', 'Lorem ipsum', 'GTI']} class="top-2" />
|
|
48
|
+
</div>
|
|
49
|
+
</div>
|
|
50
|
+
|
|
51
|
+
```js
|
|
52
|
+
<div class="relative">
|
|
53
|
+
<img src="https://placehold.co/300x200" alt="image alt" />
|
|
54
|
+
<Badges badges={['Motorsport', 'Lorem ipsum', 'GTI']} class="top-2" />
|
|
55
|
+
</div>
|
|
56
|
+
|
|
57
|
+
```
|
|
@@ -1,139 +1,139 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: "Breadcrumbs"
|
|
3
|
-
layout: "../../layouts/MainLayout.astro"
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
---
|
|
7
|
-
import Breadcrumbs from '../../components/Breadcrumbs.vue'
|
|
8
|
-
|
|
9
|
-
# Breadcrumbs
|
|
10
|
-
|
|
11
|
-
Breadcrumbs component with BreadcrumbList Microdata.
|
|
12
|
-
|
|
13
|
-
Structured Data for Breadcrumbs that produce a Rich Snippet (in this case breadcrumbs) in search results that are clickable, too!
|
|
14
|
-
|
|
15
|
-
#
|
|
16
|
-
|
|
17
|
-
https://schema.org/BreadcrumbList
|
|
18
|
-
|
|
19
|
-
https://schema.org/ListItem
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
## Show back
|
|
24
|
-
|
|
25
|
-
<div class="component-preview">
|
|
26
|
-
<Breadcrumbs
|
|
27
|
-
breadcrumbs={ [ {"name": "Level1", "path": "#level2"}, {"name": "Level 2", "path": "#level2"}, {"name": "Level 3", "path": "#level3"} ] }
|
|
28
|
-
product-number="6R0XXXXXX"
|
|
29
|
-
class="py-1 order-0 px-1 max-w-full flex bg-white"
|
|
30
|
-
show-back
|
|
31
|
-
text-back="Back"
|
|
32
|
-
/>
|
|
33
|
-
</div>
|
|
34
|
-
|
|
35
|
-
```js
|
|
36
|
-
<Breadcrumbs
|
|
37
|
-
breadcrumbs={
|
|
38
|
-
[
|
|
39
|
-
{"name": "Level1", "path": "level1"},
|
|
40
|
-
{"name": "Level 2", "path": "level2"},
|
|
41
|
-
{"name": "Level 3", "path": "level3"}
|
|
42
|
-
]
|
|
43
|
-
}
|
|
44
|
-
product-number="6R0XXXXXX"
|
|
45
|
-
class="py-1 order-0 px-1 max-w-full flex bg-white"
|
|
46
|
-
show-back
|
|
47
|
-
text-back="Back"
|
|
48
|
-
/>
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
## Show home
|
|
53
|
-
|
|
54
|
-
<div class="component-preview">
|
|
55
|
-
<Breadcrumbs
|
|
56
|
-
breadcrumbs={ [ {"name": "Level1", "path": "#level2"}, {"name": "Level 2", "path": "#level2"}, {"name": "Level 3", "path": "#level3"} ] }
|
|
57
|
-
product-number="6R0XXXXXX"
|
|
58
|
-
class="py-1 order-0 px-1 max-w-full flex bg-white"
|
|
59
|
-
show-home
|
|
60
|
-
/>
|
|
61
|
-
</div>
|
|
62
|
-
|
|
63
|
-
```js
|
|
64
|
-
<Breadcrumbs
|
|
65
|
-
breadcrumbs={
|
|
66
|
-
[
|
|
67
|
-
{"name": "Level1", "path": "level 1"},
|
|
68
|
-
{"name": "Level 2", "path": "level2"},
|
|
69
|
-
{"name": "Level 3", "path": "level3"}
|
|
70
|
-
]
|
|
71
|
-
}
|
|
72
|
-
product-number="6R0XXXXXX"
|
|
73
|
-
class="py-1 order-0 px-1 max-w-full flex bg-white"
|
|
74
|
-
show-home
|
|
75
|
-
/>
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
## Simply
|
|
80
|
-
|
|
81
|
-
<div class="component-preview">
|
|
82
|
-
<Breadcrumbs
|
|
83
|
-
breadcrumbs={ [ {"name": "Level1", "path": "#level2"}, {"name": "Level 2", "path": "#level2"}, {"name": "Level 3", "path": "#level3"} ] }
|
|
84
|
-
product-number="6R0XXXXXX"
|
|
85
|
-
class="py-1 order-0 px-1 max-w-full flex bg-white"
|
|
86
|
-
/>
|
|
87
|
-
</div>
|
|
88
|
-
|
|
89
|
-
```js
|
|
90
|
-
<Breadcrumbs
|
|
91
|
-
breadcrumbs={
|
|
92
|
-
[
|
|
93
|
-
{"name": "Level1", "path": "level 1"},
|
|
94
|
-
{"name": "Level 2", "path": "level2"},
|
|
95
|
-
{"name": "Level 3", "path": "level3"}
|
|
96
|
-
]
|
|
97
|
-
}
|
|
98
|
-
product-number="6R0XXXXXX"
|
|
99
|
-
class="py-1 order-0 px-1 max-w-full flex bg-white"
|
|
100
|
-
show-back
|
|
101
|
-
text-back="Back"
|
|
102
|
-
/>
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
### Schema support:
|
|
107
|
-
- https://developers.google.com/search/docs/appearance/structured-data/breadcrumb?hl=en
|
|
108
|
-
|
|
109
|
-
#### Example
|
|
110
|
-
- https://validator.schema.org/?hl=en-US#url=https%3A%2F%2Fcatalog.polo.blue%2FN10733102%2F
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
| @type | BreadcrumbList |
|
|
114
|
-
| ---------------- | --------------------------------------------------------------------------------- |
|
|
115
|
-
| **itemListElement** | |
|
|
116
|
-
| **@type** | ListItem |
|
|
117
|
-
| **name** | Electrical, Lighting, Telematics |
|
|
118
|
-
| **position** | 1 |
|
|
119
|
-
| **item** | |
|
|
120
|
-
| **@type** | Thing |
|
|
121
|
-
| **@id** | https://catalog.polo.blue/electrical-lighting-telematics/ |
|
|
122
|
-
| **itemListElement** | |
|
|
123
|
-
| **@type** | ListItem |
|
|
124
|
-
| **name** | Exterior Lighting |
|
|
125
|
-
| **position** | 2 |
|
|
126
|
-
| **item** | |
|
|
127
|
-
| **@type** | Thing |
|
|
128
|
-
| **@id** | https://catalog.polo.blue/electrical-lighting-telematics/exterior-lighting/ |
|
|
129
|
-
| **itemListElement** | |
|
|
130
|
-
| **@type** | ListItem |
|
|
131
|
-
| **name** | Bulbs |
|
|
132
|
-
| **position** | 3 |
|
|
133
|
-
| **item** | |
|
|
134
|
-
| **@type** | Thing |
|
|
135
|
-
| **@id** | https://catalog.polo.blue/electrical-lighting-telematics/exterior-lighting/bulbs/ |
|
|
136
|
-
| **itemListElement** | |
|
|
137
|
-
| **@type** | ListItem |
|
|
138
|
-
| **name** | Bulb carrier with bulb; silver lens |
|
|
139
|
-
| **position** | 4 |
|
|
1
|
+
---
|
|
2
|
+
title: "Breadcrumbs"
|
|
3
|
+
layout: "../../layouts/MainLayout.astro"
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
import Breadcrumbs from '../../components/Breadcrumbs.vue'
|
|
8
|
+
|
|
9
|
+
# Breadcrumbs
|
|
10
|
+
|
|
11
|
+
Breadcrumbs component with BreadcrumbList Microdata.
|
|
12
|
+
|
|
13
|
+
Structured Data for Breadcrumbs that produce a Rich Snippet (in this case breadcrumbs) in search results that are clickable, too!
|
|
14
|
+
|
|
15
|
+
#
|
|
16
|
+
|
|
17
|
+
https://schema.org/BreadcrumbList
|
|
18
|
+
|
|
19
|
+
https://schema.org/ListItem
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
## Show back
|
|
24
|
+
|
|
25
|
+
<div class="component-preview">
|
|
26
|
+
<Breadcrumbs
|
|
27
|
+
breadcrumbs={ [ {"name": "Level1", "path": "#level2"}, {"name": "Level 2", "path": "#level2"}, {"name": "Level 3", "path": "#level3"} ] }
|
|
28
|
+
product-number="6R0XXXXXX"
|
|
29
|
+
class="py-1 order-0 px-1 max-w-full flex bg-white"
|
|
30
|
+
show-back
|
|
31
|
+
text-back="Back"
|
|
32
|
+
/>
|
|
33
|
+
</div>
|
|
34
|
+
|
|
35
|
+
```js
|
|
36
|
+
<Breadcrumbs
|
|
37
|
+
breadcrumbs={
|
|
38
|
+
[
|
|
39
|
+
{"name": "Level1", "path": "level1"},
|
|
40
|
+
{"name": "Level 2", "path": "level2"},
|
|
41
|
+
{"name": "Level 3", "path": "level3"}
|
|
42
|
+
]
|
|
43
|
+
}
|
|
44
|
+
product-number="6R0XXXXXX"
|
|
45
|
+
class="py-1 order-0 px-1 max-w-full flex bg-white"
|
|
46
|
+
show-back
|
|
47
|
+
text-back="Back"
|
|
48
|
+
/>
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
## Show home
|
|
53
|
+
|
|
54
|
+
<div class="component-preview">
|
|
55
|
+
<Breadcrumbs
|
|
56
|
+
breadcrumbs={ [ {"name": "Level1", "path": "#level2"}, {"name": "Level 2", "path": "#level2"}, {"name": "Level 3", "path": "#level3"} ] }
|
|
57
|
+
product-number="6R0XXXXXX"
|
|
58
|
+
class="py-1 order-0 px-1 max-w-full flex bg-white"
|
|
59
|
+
show-home
|
|
60
|
+
/>
|
|
61
|
+
</div>
|
|
62
|
+
|
|
63
|
+
```js
|
|
64
|
+
<Breadcrumbs
|
|
65
|
+
breadcrumbs={
|
|
66
|
+
[
|
|
67
|
+
{"name": "Level1", "path": "level 1"},
|
|
68
|
+
{"name": "Level 2", "path": "level2"},
|
|
69
|
+
{"name": "Level 3", "path": "level3"}
|
|
70
|
+
]
|
|
71
|
+
}
|
|
72
|
+
product-number="6R0XXXXXX"
|
|
73
|
+
class="py-1 order-0 px-1 max-w-full flex bg-white"
|
|
74
|
+
show-home
|
|
75
|
+
/>
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
## Simply
|
|
80
|
+
|
|
81
|
+
<div class="component-preview">
|
|
82
|
+
<Breadcrumbs
|
|
83
|
+
breadcrumbs={ [ {"name": "Level1", "path": "#level2"}, {"name": "Level 2", "path": "#level2"}, {"name": "Level 3", "path": "#level3"} ] }
|
|
84
|
+
product-number="6R0XXXXXX"
|
|
85
|
+
class="py-1 order-0 px-1 max-w-full flex bg-white"
|
|
86
|
+
/>
|
|
87
|
+
</div>
|
|
88
|
+
|
|
89
|
+
```js
|
|
90
|
+
<Breadcrumbs
|
|
91
|
+
breadcrumbs={
|
|
92
|
+
[
|
|
93
|
+
{"name": "Level1", "path": "level 1"},
|
|
94
|
+
{"name": "Level 2", "path": "level2"},
|
|
95
|
+
{"name": "Level 3", "path": "level3"}
|
|
96
|
+
]
|
|
97
|
+
}
|
|
98
|
+
product-number="6R0XXXXXX"
|
|
99
|
+
class="py-1 order-0 px-1 max-w-full flex bg-white"
|
|
100
|
+
show-back
|
|
101
|
+
text-back="Back"
|
|
102
|
+
/>
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
### Schema support:
|
|
107
|
+
- https://developers.google.com/search/docs/appearance/structured-data/breadcrumb?hl=en
|
|
108
|
+
|
|
109
|
+
#### Example
|
|
110
|
+
- https://validator.schema.org/?hl=en-US#url=https%3A%2F%2Fcatalog.polo.blue%2FN10733102%2F
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
| @type | BreadcrumbList |
|
|
114
|
+
| ---------------- | --------------------------------------------------------------------------------- |
|
|
115
|
+
| **itemListElement** | |
|
|
116
|
+
| **@type** | ListItem |
|
|
117
|
+
| **name** | Electrical, Lighting, Telematics |
|
|
118
|
+
| **position** | 1 |
|
|
119
|
+
| **item** | |
|
|
120
|
+
| **@type** | Thing |
|
|
121
|
+
| **@id** | https://catalog.polo.blue/electrical-lighting-telematics/ |
|
|
122
|
+
| **itemListElement** | |
|
|
123
|
+
| **@type** | ListItem |
|
|
124
|
+
| **name** | Exterior Lighting |
|
|
125
|
+
| **position** | 2 |
|
|
126
|
+
| **item** | |
|
|
127
|
+
| **@type** | Thing |
|
|
128
|
+
| **@id** | https://catalog.polo.blue/electrical-lighting-telematics/exterior-lighting/ |
|
|
129
|
+
| **itemListElement** | |
|
|
130
|
+
| **@type** | ListItem |
|
|
131
|
+
| **name** | Bulbs |
|
|
132
|
+
| **position** | 3 |
|
|
133
|
+
| **item** | |
|
|
134
|
+
| **@type** | Thing |
|
|
135
|
+
| **@id** | https://catalog.polo.blue/electrical-lighting-telematics/exterior-lighting/bulbs/ |
|
|
136
|
+
| **itemListElement** | |
|
|
137
|
+
| **@type** | ListItem |
|
|
138
|
+
| **name** | Bulb carrier with bulb; silver lens |
|
|
139
|
+
| **position** | 4 |
|