spoko-design-system 0.9.6 → 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 (176) 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 +13 -3
  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/ProductEngineType.vue +42 -42
  83. package/src/components/Product/ProductImage.astro +40 -40
  84. package/src/components/Product/ProductLink.astro +101 -101
  85. package/src/components/Product/ProductLink.vue +59 -59
  86. package/src/components/Product/ProductLinkInfo.astro +37 -37
  87. package/src/components/Product/ProductNumber.astro +60 -60
  88. package/src/components/ProductCarousel.astro +38 -38
  89. package/src/components/ProductCodes.vue +39 -39
  90. package/src/components/ProductDetailName.vue +52 -52
  91. package/src/components/ProductDetailsList.vue +216 -216
  92. package/src/components/ProductTile.astro +48 -48
  93. package/src/components/Quote.vue +23 -23
  94. package/src/components/ReloadPrompt.astro +50 -50
  95. package/src/components/SlimBanner.vue +72 -72
  96. package/src/components/Table.vue +32 -32
  97. package/src/components/TableOfContents.astro +15 -15
  98. package/src/components/Translations.vue +23 -23
  99. package/src/components/flags/FlagPL.vue +3 -3
  100. package/src/components/flags/FlagUA.vue +2 -2
  101. package/src/components/{Layout → layout}/CallToAction.astro +52 -52
  102. package/src/components/{Layout → layout}/Container.astro +7 -7
  103. package/src/components/{Layout → layout}/Header.astro +80 -80
  104. package/src/config.ts +56 -56
  105. package/src/design.config.ts +98 -98
  106. package/src/env.d.ts +6 -6
  107. package/src/layouts/Layout.astro +61 -61
  108. package/src/layouts/MainLayout.astro +81 -81
  109. package/src/layouts/partials/FooterCommon.astro +4 -4
  110. package/src/layouts/partials/HeadCommon.astro +44 -44
  111. package/src/layouts/partials/HeadSEO.astro +41 -41
  112. package/src/pages/components/badges.mdx +57 -57
  113. package/src/pages/components/breadcrumbs.mdx +139 -139
  114. package/src/pages/components/buttons.mdx +360 -360
  115. package/src/pages/components/card.mdx +294 -294
  116. package/src/pages/components/carousel.mdx +62 -62
  117. package/src/pages/components/copyright.mdx +42 -42
  118. package/src/pages/components/details-list.mdx +115 -115
  119. package/src/pages/components/features-list.mdx +37 -37
  120. package/src/pages/components/flags.mdx +49 -49
  121. package/src/pages/components/fuck-russia.mdx +39 -39
  122. package/src/pages/components/hand-drive.mdx +105 -38
  123. package/src/pages/components/headline.mdx +137 -137
  124. package/src/pages/components/icons.astro +135 -135
  125. package/src/pages/components/image.mdx +513 -513
  126. package/src/pages/components/input.mdx +367 -367
  127. package/src/pages/components/jumbotron.mdx +359 -359
  128. package/src/pages/components/modal.mdx +64 -64
  129. package/src/pages/components/post-header.mdx +64 -64
  130. package/src/pages/components/pr-code.mdx +65 -65
  131. package/src/pages/components/product-number.mdx +58 -58
  132. package/src/pages/components/product-tile.mdx +51 -51
  133. package/src/pages/components/quote.mdx +33 -33
  134. package/src/pages/components/slimbanner.mdx +35 -35
  135. package/src/pages/components/table.mdx +108 -108
  136. package/src/pages/core/colors.mdx +10 -10
  137. package/src/pages/core/grid.mdx +89 -89
  138. package/src/pages/core/introduction.mdx +77 -77
  139. package/src/pages/core/shadows.astro +20 -20
  140. package/src/pages/core/typography.astro +49 -49
  141. package/src/pages/index.astro +133 -133
  142. package/src/pages/patterns/introduction.mdx +60 -60
  143. package/src/pwa.ts +12 -12
  144. package/src/styles/_variables.scss +70 -70
  145. package/src/styles/base/base.css +184 -184
  146. package/src/styles/base/grid.css +92 -92
  147. package/src/styles/base/typography.css +70 -70
  148. package/src/styles/content.css +73 -73
  149. package/src/styles/main.css +7 -7
  150. package/src/types/Product.ts +31 -31
  151. package/src/types/astro.d.ts +3 -3
  152. package/src/utils/product/getPriceFormatted.ts +15 -15
  153. package/src/utils/product/getProductChecklist.ts +17 -17
  154. package/src/utils/product/useFormatProductNumber.ts +41 -41
  155. package/src/utils/seo/getShorterDescription.ts +14 -14
  156. package/src/utils/text/formatDate.ts +5 -5
  157. package/src/utils/text/formatLocaleNumber.ts +6 -6
  158. package/src/utils/text/formatPad.ts +12 -12
  159. package/src/utils/text/getNumberFormatted.ts +33 -33
  160. package/src/utils/text/getTranslatedLink.ts +5 -5
  161. package/src/utils/text.ts +19 -19
  162. package/tailwind.config.cjs +8 -8
  163. package/tsconfig.json +28 -28
  164. package/uno-config/index.ts +268 -268
  165. package/uno-config/theme/breakpoints.ts +9 -9
  166. package/uno-config/theme/colors.ts +64 -64
  167. package/uno-config/theme/dimensions.ts +17 -17
  168. package/uno-config/theme/effects.ts +14 -14
  169. package/uno-config/theme/grid.ts +10 -10
  170. package/uno-config/theme/index.ts +28 -28
  171. package/uno-config/theme/shortcuts/buttons.ts +53 -53
  172. package/uno-config/theme/shortcuts/components.ts +123 -123
  173. package/uno-config/theme/shortcuts/index.ts +20 -20
  174. package/uno-config/theme/shortcuts/layout.ts +74 -74
  175. package/uno-config/theme/typography.ts +29 -29
  176. package/uno.config.ts +2 -2
@@ -1,31 +1,31 @@
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-base"
24
- :class="{ 'category-link-active': props.active }"
25
- :title="props.category.description || props.category.name"
26
- >
27
- {{ props.category.name }}
28
- </a>
29
- </template>
30
-
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-base"
24
+ :class="{ 'category-link-active': props.active }"
25
+ :title="props.category.description || props.category.name"
26
+ >
27
+ {{ props.category.name }}
28
+ </a>
29
+ </template>
30
+
31
31
  <!-- No <style> section - all styles are now UnoCSS shortcuts -->
@@ -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, 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
+ ---
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>
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>
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>