spoko-design-system 0.9.3 → 0.9.5

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.
Files changed (173) hide show
  1. package/.astro/settings.json +4 -4
  2. package/.astro/types.d.ts +1 -1
  3. package/.claude/settings.local.json +2 -1
  4. package/.github/dependabot.yml +11 -11
  5. package/.github/todo.yml +3 -3
  6. package/.github/workflows/deploy.yml +39 -39
  7. package/.stackblitzrc +5 -5
  8. package/.vscode/extensions.json +5 -5
  9. package/.vscode/launch.json +11 -11
  10. package/.vscode/settings.json +5 -5
  11. package/LICENSE +21 -21
  12. package/README.md +116 -116
  13. package/astro-i18next.config.mjs +17 -17
  14. package/astro-i18next.config.ts +10 -10
  15. package/astro.config.mjs +86 -86
  16. package/dev-dist/sw.js +91 -91
  17. package/dev-dist/workbox-c676b6d3.js +3391 -3391
  18. package/icon.config.ts +310 -310
  19. package/index.ts +70 -70
  20. package/package.json +37 -33
  21. package/public/arrow-bottom.svg +7 -7
  22. package/public/fonts/lg.svg +53 -53
  23. package/public/fonts/vwhead-bold-demo.html +549 -549
  24. package/public/fonts/vwhead-regular-demo.html +549 -549
  25. package/public/fonts/vwtext-bold-demo.html +549 -549
  26. package/public/fonts/vwtext-regular-demo.html +549 -549
  27. package/public/github.svg +3 -3
  28. package/public/grid_dot.svg +4 -4
  29. package/public/linkedin.svg +44 -44
  30. package/public/locales/en/translation.json +12 -12
  31. package/public/locales/pl/translation.json +12 -12
  32. package/public/make-scrollable-code-focusable.js +3 -3
  33. package/public/pagefind.yml +3 -3
  34. package/public/polo.blue.svg +29 -29
  35. package/public/spoko.space.svg +71 -71
  36. package/public/twitter.svg +46 -46
  37. package/renovate.json +6 -6
  38. package/sandbox.config.json +11 -11
  39. package/src/MyComponent.astro +8 -8
  40. package/src/components/Badge.vue +19 -19
  41. package/src/components/Badges.vue +21 -21
  42. package/src/components/Breadcrumbs.vue +94 -94
  43. package/src/components/Button.vue +101 -101
  44. package/src/components/ButtonCopy.astro +183 -183
  45. package/src/components/ButtonCopy.vue +36 -36
  46. package/src/components/Card.astro +27 -27
  47. package/src/components/Carousel.astro +26 -26
  48. package/src/components/Category/CategoriesCarousel.astro +101 -101
  49. package/src/components/Category/CategoryDetails.astro +169 -169
  50. package/src/components/Category/CategoryLink.vue +28 -28
  51. package/src/components/Category/CategorySidebarToggler.vue +9 -9
  52. package/src/components/Category/CategoryTile.astro +37 -37
  53. package/src/components/Category/CategoryViewToggler.astro +89 -89
  54. package/src/components/Category/SubCategoryLink.vue +19 -19
  55. package/src/components/Copyright.astro +12 -12
  56. package/src/components/Date.astro +7 -7
  57. package/src/components/Faq.astro +33 -33
  58. package/src/components/FaqItem.astro +80 -80
  59. package/src/components/FeaturesList.vue +37 -37
  60. package/src/components/FuckRussia.vue +62 -62
  61. package/src/components/HandDrive.astro +29 -29
  62. package/src/components/Header/Header.astro +210 -210
  63. package/src/components/Header/SkipToContent.astro +1 -1
  64. package/src/components/Headline.vue +87 -87
  65. package/src/components/Image.astro +30 -30
  66. package/src/components/{layout → Layout}/CallToAction.astro +52 -52
  67. package/src/components/{layout → Layout}/Container.astro +7 -7
  68. package/src/components/{layout → Layout}/Header.astro +80 -80
  69. package/src/components/LeftSidebar.astro +53 -53
  70. package/src/components/MainColors.vue +22 -22
  71. package/src/components/MainInput.vue +15 -15
  72. package/src/components/Modal.astro +27 -27
  73. package/src/components/PageContent.astro +5 -5
  74. package/src/components/PartNumber.vue +27 -27
  75. package/src/components/Post/PostCategories.astro +41 -41
  76. package/src/components/Post/PostCategories.vue +30 -30
  77. package/src/components/PostHeader.astro +103 -103
  78. package/src/components/PrCode.vue +141 -141
  79. package/src/components/Product/ProductButton.vue +18 -18
  80. package/src/components/Product/ProductCarousel.astro +35 -35
  81. package/src/components/Product/ProductEngineType.vue +42 -42
  82. package/src/components/Product/ProductImage.astro +40 -40
  83. package/src/components/Product/ProductLink.astro +101 -101
  84. package/src/components/Product/ProductLink.vue +59 -59
  85. package/src/components/Product/ProductLinkInfo.astro +37 -37
  86. package/src/components/Product/ProductNumber.astro +60 -60
  87. package/src/components/ProductCarousel.astro +38 -38
  88. package/src/components/ProductCodes.vue +39 -39
  89. package/src/components/ProductDetailName.vue +52 -52
  90. package/src/components/ProductDetailsList.vue +216 -216
  91. package/src/components/ProductTile.astro +48 -48
  92. package/src/components/Quote.vue +23 -23
  93. package/src/components/ReloadPrompt.astro +50 -50
  94. package/src/components/SlimBanner.vue +72 -72
  95. package/src/components/Table.vue +32 -32
  96. package/src/components/TableOfContents.astro +15 -15
  97. package/src/components/Translations.vue +23 -23
  98. package/src/components/flags/FlagPL.vue +3 -3
  99. package/src/components/flags/FlagUA.vue +2 -2
  100. package/src/config.ts +56 -56
  101. package/src/design.config.ts +98 -98
  102. package/src/env.d.ts +6 -6
  103. package/src/layouts/Layout.astro +61 -61
  104. package/src/layouts/MainLayout.astro +81 -81
  105. package/src/layouts/partials/FooterCommon.astro +4 -4
  106. package/src/layouts/partials/HeadCommon.astro +44 -44
  107. package/src/layouts/partials/HeadSEO.astro +41 -41
  108. package/src/pages/components/badges.mdx +57 -57
  109. package/src/pages/components/breadcrumbs.mdx +139 -139
  110. package/src/pages/components/buttons.mdx +360 -360
  111. package/src/pages/components/card.mdx +294 -294
  112. package/src/pages/components/carousel.mdx +62 -62
  113. package/src/pages/components/copyright.mdx +42 -42
  114. package/src/pages/components/details-list.mdx +115 -115
  115. package/src/pages/components/features-list.mdx +37 -37
  116. package/src/pages/components/flags.mdx +49 -49
  117. package/src/pages/components/fuck-russia.mdx +39 -39
  118. package/src/pages/components/hand-drive.mdx +38 -38
  119. package/src/pages/components/headline.mdx +137 -137
  120. package/src/pages/components/icons.astro +135 -135
  121. package/src/pages/components/image.mdx +513 -513
  122. package/src/pages/components/input.mdx +367 -367
  123. package/src/pages/components/jumbotron.mdx +359 -359
  124. package/src/pages/components/modal.mdx +64 -64
  125. package/src/pages/components/post-header.mdx +64 -64
  126. package/src/pages/components/pr-code.mdx +65 -65
  127. package/src/pages/components/product-number.mdx +58 -58
  128. package/src/pages/components/product-tile.mdx +51 -51
  129. package/src/pages/components/quote.mdx +33 -33
  130. package/src/pages/components/slimbanner.mdx +35 -35
  131. package/src/pages/components/table.mdx +108 -108
  132. package/src/pages/core/colors.mdx +10 -10
  133. package/src/pages/core/grid.mdx +89 -89
  134. package/src/pages/core/introduction.mdx +77 -77
  135. package/src/pages/core/shadows.astro +20 -20
  136. package/src/pages/core/typography.astro +49 -49
  137. package/src/pages/index.astro +133 -133
  138. package/src/pages/patterns/introduction.mdx +60 -60
  139. package/src/pwa.ts +12 -12
  140. package/src/styles/_variables.scss +70 -70
  141. package/src/styles/base/base.css +184 -184
  142. package/src/styles/base/grid.css +92 -92
  143. package/src/styles/base/typography.css +70 -70
  144. package/src/styles/content.css +73 -73
  145. package/src/styles/main.css +7 -7
  146. package/src/types/Product.ts +31 -31
  147. package/src/types/astro.d.ts +3 -3
  148. package/src/utils/product/getPriceFormatted.ts +15 -15
  149. package/src/utils/product/getProductChecklist.ts +17 -17
  150. package/src/utils/product/useFormatProductNumber.ts +41 -41
  151. package/src/utils/seo/getShorterDescription.ts +14 -14
  152. package/src/utils/text/formatDate.ts +5 -5
  153. package/src/utils/text/formatLocaleNumber.ts +6 -6
  154. package/src/utils/text/formatPad.ts +12 -12
  155. package/src/utils/text/getNumberFormatted.ts +33 -33
  156. package/src/utils/text/getTranslatedLink.ts +5 -5
  157. package/src/utils/text.ts +19 -19
  158. package/tailwind.config.cjs +8 -8
  159. package/tsconfig.json +28 -28
  160. package/uno-config/index.ts +268 -268
  161. package/uno-config/theme/breakpoints.ts +9 -9
  162. package/uno-config/theme/colors.ts +64 -64
  163. package/uno-config/theme/dimensions.ts +17 -17
  164. package/uno-config/theme/effects.ts +14 -14
  165. package/uno-config/theme/grid.ts +10 -10
  166. package/uno-config/theme/index.ts +28 -28
  167. package/uno-config/theme/shortcuts/buttons.ts +53 -53
  168. package/uno-config/theme/shortcuts/components.ts +123 -123
  169. package/uno-config/theme/shortcuts/index.ts +20 -20
  170. package/uno-config/theme/shortcuts/jumbotron.ts +1 -1
  171. package/uno-config/theme/shortcuts/layout.ts +74 -74
  172. package/uno-config/theme/typography.ts +29 -29
  173. 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 |