spoko-design-system 0.9.5 → 1.0.0

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 (179) hide show
  1. package/.astro/content.d.ts +1 -1
  2. package/.astro/settings.json +4 -4
  3. package/.astro/types.d.ts +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/.github/workflows/release.yml +64 -0
  8. package/.releaserc.json +93 -0
  9. package/.stackblitzrc +5 -5
  10. package/.vscode/extensions.json +5 -5
  11. package/.vscode/launch.json +11 -11
  12. package/.vscode/settings.json +5 -5
  13. package/CHANGELOG.md +12 -0
  14. package/CONTRIBUTING.md +183 -0
  15. package/LICENSE +21 -21
  16. package/README.md +116 -116
  17. package/astro-i18next.config.mjs +17 -17
  18. package/astro-i18next.config.ts +10 -10
  19. package/astro.config.mjs +86 -86
  20. package/dev-dist/sw.js +91 -91
  21. package/dev-dist/workbox-c676b6d3.js +3391 -3391
  22. package/icon.config.ts +310 -310
  23. package/index.ts +70 -70
  24. package/package.json +22 -12
  25. package/public/arrow-bottom.svg +7 -7
  26. package/public/fonts/lg.svg +53 -53
  27. package/public/fonts/vwhead-bold-demo.html +549 -549
  28. package/public/fonts/vwhead-regular-demo.html +549 -549
  29. package/public/fonts/vwtext-bold-demo.html +549 -549
  30. package/public/fonts/vwtext-regular-demo.html +549 -549
  31. package/public/github.svg +3 -3
  32. package/public/grid_dot.svg +4 -4
  33. package/public/linkedin.svg +44 -44
  34. package/public/locales/en/translation.json +12 -12
  35. package/public/locales/pl/translation.json +12 -12
  36. package/public/make-scrollable-code-focusable.js +3 -3
  37. package/public/pagefind.yml +3 -3
  38. package/public/polo.blue.svg +29 -29
  39. package/public/spoko.space.svg +71 -71
  40. package/public/twitter.svg +46 -46
  41. package/renovate.json +6 -6
  42. package/sandbox.config.json +11 -11
  43. package/src/MyComponent.astro +8 -8
  44. package/src/components/Badge.vue +19 -19
  45. package/src/components/Badges.vue +21 -21
  46. package/src/components/Breadcrumbs.vue +94 -94
  47. package/src/components/Button.vue +101 -101
  48. package/src/components/ButtonCopy.astro +183 -183
  49. package/src/components/ButtonCopy.vue +36 -36
  50. package/src/components/Card.astro +27 -27
  51. package/src/components/Carousel.astro +26 -26
  52. package/src/components/Category/CategoriesCarousel.astro +101 -101
  53. package/src/components/Category/CategoryDetails.astro +169 -169
  54. package/src/components/Category/CategoryLink.vue +28 -28
  55. package/src/components/Category/CategorySidebarToggler.vue +9 -9
  56. package/src/components/Category/CategoryTile.astro +37 -37
  57. package/src/components/Category/CategoryViewToggler.astro +89 -89
  58. package/src/components/Category/SubCategoryLink.vue +19 -19
  59. package/src/components/Copyright.astro +12 -12
  60. package/src/components/Date.astro +7 -7
  61. package/src/components/Faq.astro +33 -33
  62. package/src/components/FaqItem.astro +80 -80
  63. package/src/components/FeaturesList.vue +37 -37
  64. package/src/components/FuckRussia.vue +62 -62
  65. package/src/components/HandDrive.astro +55 -29
  66. package/src/components/Header/Header.astro +210 -210
  67. package/src/components/Header/SkipToContent.astro +1 -1
  68. package/src/components/Headline.vue +87 -87
  69. package/src/components/Image.astro +30 -30
  70. package/src/components/LeftSidebar.astro +53 -53
  71. package/src/components/MainColors.vue +22 -22
  72. package/src/components/MainInput.vue +15 -15
  73. package/src/components/Modal.astro +27 -27
  74. package/src/components/PageContent.astro +5 -5
  75. package/src/components/PartNumber.vue +27 -27
  76. package/src/components/Post/PostCategories.astro +41 -41
  77. package/src/components/Post/PostCategories.vue +30 -30
  78. package/src/components/PostHeader.astro +103 -103
  79. package/src/components/PrCode.vue +141 -141
  80. package/src/components/Product/ProductButton.vue +18 -18
  81. package/src/components/Product/ProductCarousel.astro +35 -35
  82. package/src/components/Product/ProductColors.vue +1 -1
  83. package/src/components/Product/ProductEngineType.vue +42 -42
  84. package/src/components/Product/ProductImage.astro +40 -40
  85. package/src/components/Product/ProductLink.astro +101 -101
  86. package/src/components/Product/ProductLink.vue +59 -59
  87. package/src/components/Product/ProductLinkInfo.astro +37 -37
  88. package/src/components/Product/ProductModels.vue +4 -2
  89. package/src/components/Product/ProductNumber.astro +60 -60
  90. package/src/components/Product/ProductPositions.vue +1 -1
  91. package/src/components/ProductCarousel.astro +38 -38
  92. package/src/components/ProductCodes.vue +39 -39
  93. package/src/components/ProductDetailName.vue +52 -52
  94. package/src/components/ProductDetailsList.vue +216 -216
  95. package/src/components/ProductTile.astro +48 -48
  96. package/src/components/Quote.vue +23 -23
  97. package/src/components/ReloadPrompt.astro +50 -50
  98. package/src/components/SlimBanner.vue +72 -72
  99. package/src/components/Table.vue +32 -32
  100. package/src/components/TableOfContents.astro +15 -15
  101. package/src/components/Translations.vue +23 -23
  102. package/src/components/flags/FlagPL.vue +3 -3
  103. package/src/components/flags/FlagUA.vue +2 -2
  104. package/src/components/{Layout → layout}/CallToAction.astro +52 -52
  105. package/src/components/{Layout → layout}/Container.astro +7 -7
  106. package/src/components/{Layout → layout}/Header.astro +80 -80
  107. package/src/config.ts +56 -56
  108. package/src/design.config.ts +98 -98
  109. package/src/env.d.ts +6 -6
  110. package/src/layouts/Layout.astro +61 -61
  111. package/src/layouts/MainLayout.astro +81 -81
  112. package/src/layouts/partials/FooterCommon.astro +4 -4
  113. package/src/layouts/partials/HeadCommon.astro +44 -44
  114. package/src/layouts/partials/HeadSEO.astro +41 -41
  115. package/src/pages/components/badges.mdx +57 -57
  116. package/src/pages/components/breadcrumbs.mdx +139 -139
  117. package/src/pages/components/buttons.mdx +360 -360
  118. package/src/pages/components/card.mdx +294 -294
  119. package/src/pages/components/carousel.mdx +62 -62
  120. package/src/pages/components/copyright.mdx +42 -42
  121. package/src/pages/components/details-list.mdx +115 -115
  122. package/src/pages/components/features-list.mdx +37 -37
  123. package/src/pages/components/flags.mdx +49 -49
  124. package/src/pages/components/fuck-russia.mdx +39 -39
  125. package/src/pages/components/hand-drive.mdx +105 -38
  126. package/src/pages/components/headline.mdx +137 -137
  127. package/src/pages/components/icons.astro +135 -135
  128. package/src/pages/components/image.mdx +513 -513
  129. package/src/pages/components/input.mdx +367 -367
  130. package/src/pages/components/jumbotron.mdx +359 -359
  131. package/src/pages/components/modal.mdx +64 -64
  132. package/src/pages/components/post-header.mdx +64 -64
  133. package/src/pages/components/pr-code.mdx +65 -65
  134. package/src/pages/components/product-number.mdx +58 -58
  135. package/src/pages/components/product-tile.mdx +51 -51
  136. package/src/pages/components/quote.mdx +33 -33
  137. package/src/pages/components/slimbanner.mdx +35 -35
  138. package/src/pages/components/table.mdx +108 -108
  139. package/src/pages/core/colors.mdx +10 -10
  140. package/src/pages/core/grid.mdx +89 -89
  141. package/src/pages/core/introduction.mdx +77 -77
  142. package/src/pages/core/shadows.astro +20 -20
  143. package/src/pages/core/typography.astro +49 -49
  144. package/src/pages/index.astro +133 -133
  145. package/src/pages/patterns/introduction.mdx +60 -60
  146. package/src/pwa.ts +12 -12
  147. package/src/styles/_variables.scss +70 -70
  148. package/src/styles/base/base.css +184 -184
  149. package/src/styles/base/grid.css +92 -92
  150. package/src/styles/base/typography.css +70 -70
  151. package/src/styles/content.css +73 -73
  152. package/src/styles/main.css +7 -7
  153. package/src/types/Product.ts +31 -31
  154. package/src/types/astro.d.ts +3 -3
  155. package/src/utils/product/getPriceFormatted.ts +15 -15
  156. package/src/utils/product/getProductChecklist.ts +17 -17
  157. package/src/utils/product/useFormatProductNumber.ts +41 -41
  158. package/src/utils/seo/getShorterDescription.ts +14 -14
  159. package/src/utils/text/formatDate.ts +5 -5
  160. package/src/utils/text/formatLocaleNumber.ts +6 -6
  161. package/src/utils/text/formatPad.ts +12 -12
  162. package/src/utils/text/getNumberFormatted.ts +33 -33
  163. package/src/utils/text/getTranslatedLink.ts +5 -5
  164. package/src/utils/text.ts +19 -19
  165. package/tailwind.config.cjs +8 -8
  166. package/tsconfig.json +28 -28
  167. package/uno-config/index.ts +268 -268
  168. package/uno-config/theme/breakpoints.ts +9 -9
  169. package/uno-config/theme/colors.ts +64 -64
  170. package/uno-config/theme/dimensions.ts +17 -17
  171. package/uno-config/theme/effects.ts +14 -14
  172. package/uno-config/theme/grid.ts +10 -10
  173. package/uno-config/theme/index.ts +28 -28
  174. package/uno-config/theme/shortcuts/buttons.ts +53 -53
  175. package/uno-config/theme/shortcuts/components.ts +123 -123
  176. package/uno-config/theme/shortcuts/index.ts +20 -20
  177. package/uno-config/theme/shortcuts/layout.ts +74 -74
  178. package/uno-config/theme/typography.ts +29 -29
  179. package/uno.config.ts +2 -2
@@ -1,81 +1,81 @@
1
- ---
2
- import HeadCommon from "./partials/HeadCommon.astro";
3
- import HeadSEO from "../layouts/partials/HeadSEO.astro";
4
- import Header from "../components/Header/Header.astro";
5
- import PageContent from "../components/PageContent.astro";
6
- import LeftSidebar from "../components/LeftSidebar.astro";
7
- import * as CONFIG from "../config";
8
- import { t, changeLanguage } from "i18next";
9
- import "../styles/main.css";
10
- import Copyright from "../components/Copyright.astro";
11
- const locale = "en";
12
- changeLanguage(locale);
13
- const { content = {} } = Astro.props;
14
- const currentPage = Astro.url.pathname;
15
- const canonicalURL = new URL(Astro.url.pathname, Astro.site).toString();
16
- ---
17
-
18
- <script>
19
- // Swiper Element
20
- import { register } from "swiper/element/bundle";
21
- document.addEventListener("astro:page-load", () => {
22
- register();
23
- });
24
- </script>
25
-
26
- <html dir={content.dir ?? "ltr"} lang={content.lang ?? "en-us"} class="initial">
27
- <head>
28
- <HeadCommon />
29
- <HeadSEO content={content} canonicalURL={canonicalURL} />
30
- <title>
31
- {
32
- content.title
33
- ? `${content.title} 🚀 ${CONFIG.SITE.title}`
34
- : CONFIG.SITE.title
35
- }
36
- </title>
37
- </head>
38
-
39
- <body class="bg-blue-50">
40
- <div class="sticky top-0 z-20 w-full bg-white/70">
41
- <Header currentPage={currentPage} />
42
- </div>
43
-
44
- <div class="flex bg-white z-10 mb-11 relative">
45
- <div class="sticky top-0 flex lg:(h-screen w-64) z-50">
46
- <div class="mr-auto" transition:name="sidebar">
47
- <LeftSidebar currentPage={currentPage} />
48
- </div>
49
- </div>
50
- <main class="pb-4 px-4 sm:px-8 col-auto sm:(pb-32) overflow-auto w-full">
51
- <PageContent content={content} transition:name="content">
52
- <slot />
53
- </PageContent>
54
- </main>
55
- </div>
56
- <footer>
57
- <Copyright class="fixed bottom-0 z-0 w-full">
58
- <a
59
- slot="middle-item"
60
- href="https://spoko.space"
61
- target="_blank"
62
- rel="follow noopener"
63
- class="flex my-auto items-center mx-auto"
64
- title={`Proudly made in Poland by spoko.space`}
65
- >
66
- <div class="text-xxs md:text-xs mr-1 mt-0.5 whitespace-nowrap">
67
- createdy by
68
- </div>
69
- <img
70
- class="h-4 md:h-5 w-min"
71
- src="/spoko.space.svg"
72
- alt="Modern Websites"
73
- width="126"
74
- height="23"
75
- loading="lazy"
76
- />
77
- </a>
78
- </Copyright>
79
- </footer>
80
- </body>
81
- </html>
1
+ ---
2
+ import HeadCommon from "./partials/HeadCommon.astro";
3
+ import HeadSEO from "../layouts/partials/HeadSEO.astro";
4
+ import Header from "../components/Header/Header.astro";
5
+ import PageContent from "../components/PageContent.astro";
6
+ import LeftSidebar from "../components/LeftSidebar.astro";
7
+ import * as CONFIG from "../config";
8
+ import { t, changeLanguage } from "i18next";
9
+ import "../styles/main.css";
10
+ import Copyright from "../components/Copyright.astro";
11
+ const locale = "en";
12
+ changeLanguage(locale);
13
+ const { content = {} } = Astro.props;
14
+ const currentPage = Astro.url.pathname;
15
+ const canonicalURL = new URL(Astro.url.pathname, Astro.site).toString();
16
+ ---
17
+
18
+ <script>
19
+ // Swiper Element
20
+ import { register } from "swiper/element/bundle";
21
+ document.addEventListener("astro:page-load", () => {
22
+ register();
23
+ });
24
+ </script>
25
+
26
+ <html dir={content.dir ?? "ltr"} lang={content.lang ?? "en-us"} class="initial">
27
+ <head>
28
+ <HeadCommon />
29
+ <HeadSEO content={content} canonicalURL={canonicalURL} />
30
+ <title>
31
+ {
32
+ content.title
33
+ ? `${content.title} 🚀 ${CONFIG.SITE.title}`
34
+ : CONFIG.SITE.title
35
+ }
36
+ </title>
37
+ </head>
38
+
39
+ <body class="bg-blue-50">
40
+ <div class="sticky top-0 z-20 w-full bg-white/70">
41
+ <Header currentPage={currentPage} />
42
+ </div>
43
+
44
+ <div class="flex bg-white z-10 mb-11 relative">
45
+ <div class="sticky top-0 flex lg:(h-screen w-64) z-50">
46
+ <div class="mr-auto" transition:name="sidebar">
47
+ <LeftSidebar currentPage={currentPage} />
48
+ </div>
49
+ </div>
50
+ <main class="pb-4 px-4 sm:px-8 col-auto sm:(pb-32) overflow-auto w-full">
51
+ <PageContent content={content} transition:name="content">
52
+ <slot />
53
+ </PageContent>
54
+ </main>
55
+ </div>
56
+ <footer>
57
+ <Copyright class="fixed bottom-0 z-0 w-full">
58
+ <a
59
+ slot="middle-item"
60
+ href="https://spoko.space"
61
+ target="_blank"
62
+ rel="follow noopener"
63
+ class="flex my-auto items-center mx-auto"
64
+ title={`Proudly made in Poland by spoko.space`}
65
+ >
66
+ <div class="text-xxs md:text-xs mr-1 mt-0.5 whitespace-nowrap">
67
+ createdy by
68
+ </div>
69
+ <img
70
+ class="h-4 md:h-5 w-min"
71
+ src="/spoko.space.svg"
72
+ alt="Modern Websites"
73
+ width="126"
74
+ height="23"
75
+ loading="lazy"
76
+ />
77
+ </a>
78
+ </Copyright>
79
+ </footer>
80
+ </body>
81
+ </html>
@@ -1,5 +1,5 @@
1
- ---
2
- import ReloadPrompt from "../../components/ReloadPrompt.astro";
3
- ---
4
-
1
+ ---
2
+ import ReloadPrompt from "../../components/ReloadPrompt.astro";
3
+ ---
4
+
5
5
  <ReloadPrompt />
@@ -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
+ ```