spoko-design-system 0.6.6 → 0.6.9

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 (172) hide show
  1. package/.astro/settings.json +4 -4
  2. package/.github/dependabot.yml +11 -11
  3. package/.github/todo.yml +3 -3
  4. package/.github/workflows/deploy.yml +39 -39
  5. package/.stackblitzrc +5 -5
  6. package/.vscode/extensions.json +5 -5
  7. package/.vscode/launch.json +11 -11
  8. package/.vscode/settings.json +5 -5
  9. package/LICENSE +21 -21
  10. package/README.md +114 -114
  11. package/astro-i18next.config.mjs +17 -17
  12. package/astro-i18next.config.ts +10 -10
  13. package/astro.config.mjs +86 -86
  14. package/dev-dist/sw.js +91 -91
  15. package/dev-dist/workbox-c676b6d3.js +3391 -3391
  16. package/icon.config.ts +290 -289
  17. package/index.ts +66 -66
  18. package/package.json +5 -5
  19. package/public/fonts/lg.svg +53 -53
  20. package/public/fonts/vwhead-bold-demo.html +549 -549
  21. package/public/fonts/vwhead-regular-demo.html +549 -549
  22. package/public/fonts/vwtext-bold-demo.html +549 -549
  23. package/public/fonts/vwtext-regular-demo.html +549 -549
  24. package/public/github.svg +3 -3
  25. package/public/grid_dot.svg +4 -4
  26. package/public/linkedin.svg +44 -44
  27. package/public/locales/en/translation.json +8 -8
  28. package/public/locales/pl/translation.json +8 -8
  29. package/public/make-scrollable-code-focusable.js +3 -3
  30. package/public/pagefind.yml +3 -3
  31. package/public/polo.blue.svg +29 -29
  32. package/public/spoko.space.svg +71 -71
  33. package/public/twitter.svg +46 -46
  34. package/renovate.json +6 -6
  35. package/sandbox.config.json +11 -11
  36. package/src/MyComponent.astro +8 -8
  37. package/src/components/Badge.vue +19 -19
  38. package/src/components/Badges.vue +21 -21
  39. package/src/components/Breadcrumbs.vue +107 -107
  40. package/src/components/Button.vue +101 -101
  41. package/src/components/ButtonCopy.astro +183 -183
  42. package/src/components/ButtonCopy.vue +36 -36
  43. package/src/components/Card.astro +27 -27
  44. package/src/components/Carousel.astro +26 -26
  45. package/src/components/Category/CategoriesCarousel.astro +101 -101
  46. package/src/components/Category/CategoryDetails.astro +169 -169
  47. package/src/components/Category/CategoryLink.vue +28 -28
  48. package/src/components/Category/CategorySidebarToggler.vue +9 -9
  49. package/src/components/Category/CategoryTile.astro +38 -38
  50. package/src/components/Category/CategoryViewToggler.astro +89 -89
  51. package/src/components/Category/SubCategoryLink.vue +19 -19
  52. package/src/components/Copyright.astro +12 -12
  53. package/src/components/Date.astro +7 -7
  54. package/src/components/Faq.astro +33 -33
  55. package/src/components/FaqItem.astro +80 -80
  56. package/src/components/FeaturesList.vue +41 -41
  57. package/src/components/FuckRussia.vue +62 -62
  58. package/src/components/HandDrive.astro +29 -29
  59. package/src/components/Header/Header.astro +210 -210
  60. package/src/components/Header/SkipToContent.astro +1 -1
  61. package/src/components/Headline.vue +48 -48
  62. package/src/components/Image.astro +30 -30
  63. package/src/components/Jumbotron/index.astro +4 -1
  64. package/src/components/Jumbotron/variants/Post.astro +3 -1
  65. package/src/components/Jumbotron/variants/PostSplit.astro +3 -1
  66. package/src/components/LeftSidebar.astro +53 -53
  67. package/src/components/MainColors.vue +22 -22
  68. package/src/components/MainInput.vue +15 -15
  69. package/src/components/Modal.astro +27 -27
  70. package/src/components/PageContent.astro +5 -5
  71. package/src/components/PartNumber.vue +27 -27
  72. package/src/components/Post/PostCategories.astro +41 -37
  73. package/src/components/Post/PostCategories.vue +39 -39
  74. package/src/components/PostHeader.astro +103 -103
  75. package/src/components/PrCode.vue +141 -141
  76. package/src/components/Product/ProductButton.vue +18 -18
  77. package/src/components/Product/ProductCarousel.astro +35 -35
  78. package/src/components/Product/ProductCodes.vue +174 -174
  79. package/src/components/Product/ProductEngineType.vue +42 -42
  80. package/src/components/Product/ProductImage.astro +40 -40
  81. package/src/components/Product/ProductLink.astro +101 -101
  82. package/src/components/Product/ProductLink.vue +59 -59
  83. package/src/components/Product/ProductLinkInfo.astro +37 -37
  84. package/src/components/Product/ProductNumber.astro +60 -60
  85. package/src/components/ProductCarousel.astro +38 -38
  86. package/src/components/ProductCodes.vue +39 -39
  87. package/src/components/ProductDetailName.vue +52 -52
  88. package/src/components/ProductDetailsList.vue +65 -65
  89. package/src/components/ProductTile.astro +48 -48
  90. package/src/components/Quote.vue +23 -23
  91. package/src/components/ReloadPrompt.astro +50 -50
  92. package/src/components/SlimBanner.vue +72 -72
  93. package/src/components/Table.vue +32 -32
  94. package/src/components/TableOfContents.astro +15 -15
  95. package/src/components/Translations.vue +23 -23
  96. package/src/components/flags/FlagPL.vue +3 -3
  97. package/src/components/flags/FlagUA.vue +2 -2
  98. package/src/components/layout/Container.astro +7 -7
  99. package/src/components/layout/Header.astro +80 -80
  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 +152 -152
  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 -60
  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 +232 -232
  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 +92 -92
  169. package/uno-config/theme/shortcuts/index.ts +20 -20
  170. package/uno-config/theme/shortcuts/layout.ts +64 -64
  171. package/uno-config/theme/typography.ts +29 -29
  172. package/uno.config.ts +2 -2
@@ -1,39 +1,39 @@
1
- <script setup lang="ts">
2
- interface Category {
3
- id: number;
4
- name: string;
5
- slug: string;
6
- description: string;
7
- link: string;
8
- }
9
-
10
- interface Props {
11
- category: Category;
12
- active?: boolean;
13
- }
14
-
15
- const props = withDefaults(defineProps<Props>(), {
16
- active: false
17
- });
18
- </script>
19
-
20
- <template>
21
- <a
22
- :href="props.category.link"
23
- class="category-link"
24
- :class="{ 'active': props.active }"
25
- :title="props.category.description || props.category.name"
26
- >
27
- {{ props.category.name }}
28
- </a>
29
- </template>
30
-
31
- <style scoped>
32
- .category-link {
33
- @apply text-sm sm:text-base text-accent-lightest uppercase hover:text-blue-500 transition-colors;
34
- }
35
-
36
- .category-link.active {
37
- @apply text-blue-500;
38
- }
39
- </style>
1
+ <script setup lang="ts">
2
+ interface Category {
3
+ id: number;
4
+ name: string;
5
+ slug: string;
6
+ description: string;
7
+ link: string;
8
+ }
9
+
10
+ interface Props {
11
+ category: Category;
12
+ active?: boolean;
13
+ }
14
+
15
+ const props = withDefaults(defineProps<Props>(), {
16
+ active: false
17
+ });
18
+ </script>
19
+
20
+ <template>
21
+ <a
22
+ :href="props.category.link"
23
+ class="category-link"
24
+ :class="{ 'active': props.active }"
25
+ :title="props.category.description || props.category.name"
26
+ >
27
+ {{ props.category.name }}
28
+ </a>
29
+ </template>
30
+
31
+ <style scoped>
32
+ .category-link {
33
+ @apply text-sm sm:text-base text-accent-lightest uppercase hover:text-blue-500 transition-colors;
34
+ }
35
+
36
+ .category-link.active {
37
+ @apply text-blue-500;
38
+ }
39
+ </style>
@@ -1,103 +1,103 @@
1
- ---
2
- interface Props {
3
- title: string;
4
- image: string;
5
- date?: string | null;
6
- lang: string;
7
-
8
- author: {
9
- firstName: string;
10
- name: string;
11
- } | null;
12
-
13
- categories: {
14
- name: string;
15
- uri: string;
16
- }[];
17
- }
18
-
19
- const { image, title, categories, date, author } = Astro.props;
20
- import PostCategories from "./Post/PostCategories.astro";
21
- import Date from "./Date.astro";
22
- ---
23
-
24
- <header
25
- class="post-header pt-11 w-full justify-center text-white z-2 bg-blue-darkest"
26
- >
27
- <div class="heading flex flex-wrap">
28
- <div
29
- class="w-full sm:max-w-[640px] md:max-w-3xl lg:max-w-5xl xl:max-w-7xl 2xl:max-w-[1536px] px-4 py-5 flex flex-col flex-wrap"
30
- >
31
- <h1
32
- class="font-textbold text-2xl mb-1 sm:text-3xl md:(text-4xl mb-3) xl:text-6xl mt-1 order-2 line-clamp-3 pb-1"
33
- >
34
- {title}
35
- </h1>
36
- <PostCategories categories={categories} />
37
- <div class="order-3 flex items-center text-gray-1 00">
38
- {
39
- author && (
40
- <span class="text-sm" title={author.firstName} data-pagefind-ignore>
41
- {author.name}
42
- </span>
43
- )
44
- }
45
- {author && date && <span class="mx-1">-</span>}
46
- {date && <Date date={date} />}
47
- </div>
48
- </div>
49
- </div>
50
- <div class="featured-image">
51
- <img src={image} alt={title} />
52
- </div>
53
- </header>
54
-
55
- <style >
56
- .post-header {
57
- @apply flex relative items-center;
58
- min-height: 19vw;
59
- }
60
-
61
- .heading {
62
- @apply text-white relative flex items-center justify-center mt-auto w-full pt-11 z-[2];
63
- }
64
-
65
- .featured-image {
66
- @apply absolute top-0 bottom-0 left-0 right-0 overflow-hidden w-full bg-gray-100 z-1;
67
-
68
- &:before,
69
- &:after {
70
- @apply content-empty top-0 bottom-0 left-0 right-0 absolute;
71
- }
72
-
73
- &:before {
74
- z-index: 5;
75
- background: linear-gradient(
76
- 0deg,
77
- rgba(0, 0, 0, 0.95),
78
- transparent 30%,
79
- transparent 70%,
80
- rgba(0, 0, 0, 0.95)
81
- );
82
- opacity: 0.5;
83
- }
84
-
85
- &:after {
86
- background: radial-gradient(circle at 50% 85%, #00437a 0, #001e50 100%);
87
- opacity: 0.8;
88
- }
89
-
90
- img {
91
- @apply w-full h-full object-cover block max-w-full;
92
- }
93
- }
94
- </style>
95
-
96
- <style is:global>
97
- .icon {
98
- @apply text-brand-secondary mr-2;
99
- width: 1em;
100
- height: 1em;
101
- fill: currentcolor;
102
- }
103
- </style>
1
+ ---
2
+ interface Props {
3
+ title: string;
4
+ image: string;
5
+ date?: string | null;
6
+ lang: string;
7
+
8
+ author: {
9
+ firstName: string;
10
+ name: string;
11
+ } | null;
12
+
13
+ categories: {
14
+ name: string;
15
+ uri: string;
16
+ }[];
17
+ }
18
+
19
+ const { image, title, categories, date, author, lang } = Astro.props;
20
+ import PostCategories from "./Post/PostCategories.astro";
21
+ import Date from "./Date.astro";
22
+ ---
23
+
24
+ <header
25
+ class="post-header pt-11 w-full justify-center text-white z-2 bg-blue-darkest"
26
+ >
27
+ <div class="heading flex flex-wrap">
28
+ <div
29
+ class="w-full sm:max-w-[640px] md:max-w-3xl lg:max-w-5xl xl:max-w-7xl 2xl:max-w-[1536px] px-4 py-5 flex flex-col flex-wrap"
30
+ >
31
+ <h1
32
+ class="font-textbold text-2xl mb-1 sm:text-3xl md:(text-4xl mb-3) xl:text-6xl mt-1 order-2 line-clamp-3 pb-1"
33
+ >
34
+ {title}
35
+ </h1>
36
+ <PostCategories categories={categories} lang={lang} />
37
+ <div class="order-3 flex items-center text-gray-1 00">
38
+ {
39
+ author && (
40
+ <span class="text-sm" title={author.firstName} data-pagefind-ignore>
41
+ {author.name}
42
+ </span>
43
+ )
44
+ }
45
+ {author && date && <span class="mx-1">-</span>}
46
+ {date && <Date date={date} />}
47
+ </div>
48
+ </div>
49
+ </div>
50
+ <div class="featured-image">
51
+ <img src={image} alt={title} />
52
+ </div>
53
+ </header>
54
+
55
+ <style >
56
+ .post-header {
57
+ @apply flex relative items-center;
58
+ min-height: 19vw;
59
+ }
60
+
61
+ .heading {
62
+ @apply text-white relative flex items-center justify-center mt-auto w-full pt-11 z-[2];
63
+ }
64
+
65
+ .featured-image {
66
+ @apply absolute top-0 bottom-0 left-0 right-0 overflow-hidden w-full bg-gray-100 z-1;
67
+
68
+ &:before,
69
+ &:after {
70
+ @apply content-empty top-0 bottom-0 left-0 right-0 absolute;
71
+ }
72
+
73
+ &:before {
74
+ z-index: 5;
75
+ background: linear-gradient(
76
+ 0deg,
77
+ rgba(0, 0, 0, 0.95),
78
+ transparent 30%,
79
+ transparent 70%,
80
+ rgba(0, 0, 0, 0.95)
81
+ );
82
+ opacity: 0.5;
83
+ }
84
+
85
+ &:after {
86
+ background: radial-gradient(circle at 50% 85%, #00437a 0, #001e50 100%);
87
+ opacity: 0.8;
88
+ }
89
+
90
+ img {
91
+ @apply w-full h-full object-cover block max-w-full;
92
+ }
93
+ }
94
+ </style>
95
+
96
+ <style is:global>
97
+ .icon {
98
+ @apply text-brand-secondary mr-2;
99
+ width: 1em;
100
+ height: 1em;
101
+ fill: currentcolor;
102
+ }
103
+ </style>
@@ -1,142 +1,142 @@
1
- <script lang="ts" setup>
2
- /*
3
- VAG group (VW/Audi/Skoda/Seat/Porsche/Bentley/Lamborghini/Ducati/Cupra/Scania/MAN) manufacturer PR-Code
4
- */
5
-
6
- import type { PropType } from 'vue'
7
-
8
- const props = defineProps({
9
- prcode: {
10
- type: String,
11
- default: null,
12
- required: true,
13
- },
14
- isPdp: {
15
- type: Boolean,
16
- default: false,
17
- required: false,
18
- },
19
- })
20
- </script>
21
-
22
- <template>
23
- <span data-pagefind-filter="PR-Code" class="btn-prcode "
24
- :class="`btn-prcode--${props.prcode} ${props.isPdp ? ' btn-prcode--pdp' : ''}`">
25
- {{ props.prcode }}
26
- </span>
27
- </template>
28
-
29
- <style scoped>
30
- .btn-prcode--pdp {
31
- @apply mb-1;
32
- }
33
-
34
- .btn-prcode::before {
35
- @apply rounded-2 shadow-sm py-0.5 px-2 bg-gray-100 whitespace-nowrap text-xs dark:text-black dark:bg-accent-light text-center z-50;
36
- display: none;
37
- position: absolute;
38
- top: -10px;
39
- transform: translateY(-50%) translateX(-50%);
40
- left: 50%;
41
- }
42
-
43
- .btn-prcode:hover::before {
44
- display: block;
45
- }
46
-
47
- .btn-prcode--2JK {
48
- color: #f3881d;
49
- }
50
-
51
- .btn-prcode--2JK::before {
52
- content: 'CROSS';
53
- }
54
-
55
- .btn-prcode--1LR::before,
56
- .btn-prcode--1ZG::before,
57
- .btn-prcode--1ZJ::before {
58
- content: '⌀ 256 mm';
59
- }
60
-
61
- .btn-prcode--1KD::before,
62
- .btn-prcode--1ZP::before,
63
- .btn-prcode--1ZR::before {
64
- content: '⌀ 310 mm';
65
- }
66
-
67
- .btn-prcode--1ZD::before,
68
- .btn-prcode--1ZC::before,
69
- .btn-prcode--1LN::before {
70
- content: '⌀ 288 mm; LUCAS';
71
- }
72
-
73
- .btn-prcode--2JZ {
74
- @apply text-accent-light;
75
- }
76
-
77
- .btn-prcode--2JZ::before {
78
- content: 'Bluemotion';
79
- }
80
-
81
- .btn-prcode--7L6 {
82
- @apply text-accent-light;
83
- }
84
-
85
- .btn-prcode--7L6::before {
86
- content: 'Bluemotion (CFWA + start-stop)';
87
- }
88
-
89
- .btn-prcode--1KK::before,
90
- .btn-prcode--1KT::before,
91
- .btn-prcode--1KV::before,
92
- .btn-prcode--1LV::before,
93
- .btn-prcode--2EJ::before {
94
- content: '⌀ 230 mm';
95
- }
96
-
97
- .btn-prcode--2JE {
98
- @apply text-accent-dark;
99
- }
100
-
101
- .btn-prcode--2JE::before {
102
- content: 'BlueGT';
103
- }
104
-
105
- .btn-prcode--2JP::before {
106
- content: 'R-Line';
107
- }
108
-
109
- .btn-prcode--E5M,
110
- .btn-prcode--1KD,
111
- .btn-prcode--1ZP,
112
- .btn-prcode--2JQ,
113
- .btn-prcode--TA2 {
114
- color: blue;
115
- }
116
-
117
- .btn-prcode--E5M::before,
118
- .btn-prcode--1KD::before,
119
- .btn-prcode--1ZP::before,
120
- .btn-prcode--2JQ::before,
121
- .btn-prcode--TA2::before {
122
- content: 'R WRC Street';
123
- }
124
-
125
- .btn-prcode--1KV,
126
- .btn-prcode--1ZD,
127
- .btn-prcode--1ZR,
128
- .btn-prcode--0NH,
129
- .btn-prcode--2JD {
130
- color: red;
131
- }
132
-
133
- .btn-prcode--1KV::before,
134
- .btn-prcode--1ZD::before,
135
- .btn-prcode--1ZR::before,
136
- .btn-prcode--0NH::before,
137
- .btn-prcode--2JD::before {
138
- content: 'GTI';
139
- }
140
-
141
-
1
+ <script lang="ts" setup>
2
+ /*
3
+ VAG group (VW/Audi/Skoda/Seat/Porsche/Bentley/Lamborghini/Ducati/Cupra/Scania/MAN) manufacturer PR-Code
4
+ */
5
+
6
+ import type { PropType } from 'vue'
7
+
8
+ const props = defineProps({
9
+ prcode: {
10
+ type: String,
11
+ default: null,
12
+ required: true,
13
+ },
14
+ isPdp: {
15
+ type: Boolean,
16
+ default: false,
17
+ required: false,
18
+ },
19
+ })
20
+ </script>
21
+
22
+ <template>
23
+ <span data-pagefind-filter="PR-Code" class="btn-prcode "
24
+ :class="`btn-prcode--${props.prcode} ${props.isPdp ? ' btn-prcode--pdp' : ''}`">
25
+ {{ props.prcode }}
26
+ </span>
27
+ </template>
28
+
29
+ <style scoped>
30
+ .btn-prcode--pdp {
31
+ @apply mb-1;
32
+ }
33
+
34
+ .btn-prcode::before {
35
+ @apply rounded-2 shadow-sm py-0.5 px-2 bg-gray-100 whitespace-nowrap text-xs dark:text-black dark:bg-accent-light text-center z-50;
36
+ display: none;
37
+ position: absolute;
38
+ top: -10px;
39
+ transform: translateY(-50%) translateX(-50%);
40
+ left: 50%;
41
+ }
42
+
43
+ .btn-prcode:hover::before {
44
+ display: block;
45
+ }
46
+
47
+ .btn-prcode--2JK {
48
+ color: #f3881d;
49
+ }
50
+
51
+ .btn-prcode--2JK::before {
52
+ content: 'CROSS';
53
+ }
54
+
55
+ .btn-prcode--1LR::before,
56
+ .btn-prcode--1ZG::before,
57
+ .btn-prcode--1ZJ::before {
58
+ content: '⌀ 256 mm';
59
+ }
60
+
61
+ .btn-prcode--1KD::before,
62
+ .btn-prcode--1ZP::before,
63
+ .btn-prcode--1ZR::before {
64
+ content: '⌀ 310 mm';
65
+ }
66
+
67
+ .btn-prcode--1ZD::before,
68
+ .btn-prcode--1ZC::before,
69
+ .btn-prcode--1LN::before {
70
+ content: '⌀ 288 mm; LUCAS';
71
+ }
72
+
73
+ .btn-prcode--2JZ {
74
+ @apply text-accent-light;
75
+ }
76
+
77
+ .btn-prcode--2JZ::before {
78
+ content: 'Bluemotion';
79
+ }
80
+
81
+ .btn-prcode--7L6 {
82
+ @apply text-accent-light;
83
+ }
84
+
85
+ .btn-prcode--7L6::before {
86
+ content: 'Bluemotion (CFWA + start-stop)';
87
+ }
88
+
89
+ .btn-prcode--1KK::before,
90
+ .btn-prcode--1KT::before,
91
+ .btn-prcode--1KV::before,
92
+ .btn-prcode--1LV::before,
93
+ .btn-prcode--2EJ::before {
94
+ content: '⌀ 230 mm';
95
+ }
96
+
97
+ .btn-prcode--2JE {
98
+ @apply text-accent-dark;
99
+ }
100
+
101
+ .btn-prcode--2JE::before {
102
+ content: 'BlueGT';
103
+ }
104
+
105
+ .btn-prcode--2JP::before {
106
+ content: 'R-Line';
107
+ }
108
+
109
+ .btn-prcode--E5M,
110
+ .btn-prcode--1KD,
111
+ .btn-prcode--1ZP,
112
+ .btn-prcode--2JQ,
113
+ .btn-prcode--TA2 {
114
+ color: blue;
115
+ }
116
+
117
+ .btn-prcode--E5M::before,
118
+ .btn-prcode--1KD::before,
119
+ .btn-prcode--1ZP::before,
120
+ .btn-prcode--2JQ::before,
121
+ .btn-prcode--TA2::before {
122
+ content: 'R WRC Street';
123
+ }
124
+
125
+ .btn-prcode--1KV,
126
+ .btn-prcode--1ZD,
127
+ .btn-prcode--1ZR,
128
+ .btn-prcode--0NH,
129
+ .btn-prcode--2JD {
130
+ color: red;
131
+ }
132
+
133
+ .btn-prcode--1KV::before,
134
+ .btn-prcode--1ZD::before,
135
+ .btn-prcode--1ZR::before,
136
+ .btn-prcode--0NH::before,
137
+ .btn-prcode--2JD::before {
138
+ content: 'GTI';
139
+ }
140
+
141
+
142
142
  </style>
@@ -1,18 +1,18 @@
1
- <script setup lang="ts">
2
- const props = defineProps({
3
- shadow: {
4
- type: Boolean,
5
- default: false,
6
- required: false,
7
- },
8
- })
9
- </script>
10
-
11
- <template>
12
- <button
13
- class="product-button"
14
- :class="props.shadow ? 'drop-shadow hover:(drop-shadow-md)' : ''"
15
- >
16
- <slot />
17
- </button>
18
- </template>
1
+ <script setup lang="ts">
2
+ const props = defineProps({
3
+ shadow: {
4
+ type: Boolean,
5
+ default: false,
6
+ required: false,
7
+ },
8
+ })
9
+ </script>
10
+
11
+ <template>
12
+ <button
13
+ class="product-button"
14
+ :class="props.shadow ? 'drop-shadow hover:(drop-shadow-md)' : ''"
15
+ >
16
+ <slot />
17
+ </button>
18
+ </template>
@@ -1,36 +1,36 @@
1
- ---
2
- import ProductLink from "./ProductLink.astro";
3
-
4
- // Get the product directly from the prop on render
5
- const { locale, class: className, products, isShopProduct = false, ...rest } = Astro.props;
6
-
7
- ---
8
-
9
-
10
- {
11
- products && products.length && (
12
- <swiper-container slides-per-view="auto" space-between="0" class="flex"
13
- itemscope itemtype="https://schema.org/ItemList">
14
- {
15
- products.map((product, index) => (
16
- <swiper-slide class="product-carousel"
17
- itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem" >
18
- <ProductLink productObject={product} locale={locale} index={index+1} bigTile loading="eager" isShopProduct={isShopProduct} />
19
- <div class="swiper-lazy-preloader"></div>
20
- </swiper-slide>
21
- ))
22
- }
23
- </swiper-container>
24
- )
25
- }
26
-
27
- <style>
28
- .similar-section {
29
- @apply relative z-20;
30
-
31
- &:hover {
32
- content-visibility: visible;
33
- }
34
- }
35
-
1
+ ---
2
+ import ProductLink from "./ProductLink.astro";
3
+
4
+ // Get the product directly from the prop on render
5
+ const { locale, class: className, products, isShopProduct = false, ...rest } = Astro.props;
6
+
7
+ ---
8
+
9
+
10
+ {
11
+ products && products.length && (
12
+ <swiper-container slides-per-view="auto" space-between="0" class="flex"
13
+ itemscope itemtype="https://schema.org/ItemList">
14
+ {
15
+ products.map((product, index) => (
16
+ <swiper-slide class="product-carousel"
17
+ itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem" >
18
+ <ProductLink productObject={product} locale={locale} index={index+1} bigTile loading="eager" isShopProduct={isShopProduct} />
19
+ <div class="swiper-lazy-preloader"></div>
20
+ </swiper-slide>
21
+ ))
22
+ }
23
+ </swiper-container>
24
+ )
25
+ }
26
+
27
+ <style>
28
+ .similar-section {
29
+ @apply relative z-20;
30
+
31
+ &:hover {
32
+ content-visibility: visible;
33
+ }
34
+ }
35
+
36
36
  </style>