spoko-design-system 0.2.83 → 0.2.84

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 (156) 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 +113 -113
  11. package/astro-i18next.config.mjs +17 -17
  12. package/astro-i18next.config.ts +10 -10
  13. package/astro.config.mjs +147 -147
  14. package/dev-dist/sw.js +91 -91
  15. package/dev-dist/workbox-c676b6d3.js +3391 -3391
  16. package/index.ts +62 -65
  17. package/package.json +2 -1
  18. package/public/fonts/lg.svg +53 -53
  19. package/public/fonts/vwhead-bold-demo.html +549 -549
  20. package/public/fonts/vwhead-regular-demo.html +549 -549
  21. package/public/fonts/vwtext-bold-demo.html +549 -549
  22. package/public/fonts/vwtext-regular-demo.html +549 -549
  23. package/public/github.svg +3 -3
  24. package/public/grid_dot.svg +4 -4
  25. package/public/linkedin.svg +44 -44
  26. package/public/locales/en/translation.json +8 -8
  27. package/public/locales/pl/translation.json +8 -8
  28. package/public/make-scrollable-code-focusable.js +3 -3
  29. package/public/pagefind.yml +3 -3
  30. package/public/polo.blue.svg +29 -29
  31. package/public/spoko.space.svg +71 -71
  32. package/public/twitter.svg +46 -46
  33. package/renovate.json +6 -6
  34. package/sandbox.config.json +11 -11
  35. package/src/MyComponent.astro +8 -8
  36. package/src/components/Badge.vue +19 -19
  37. package/src/components/Badges.vue +21 -21
  38. package/src/components/Breadcrumbs.vue +107 -107
  39. package/src/components/Button.vue +63 -63
  40. package/src/components/ButtonCopy.vue +36 -36
  41. package/src/components/Card.astro +27 -27
  42. package/src/components/Carousel.astro +26 -26
  43. package/src/components/Category/CategoriesCarousel.astro +101 -101
  44. package/src/components/Category/CategoryDetails.astro +106 -106
  45. package/src/components/Category/CategoryLink.vue +23 -23
  46. package/src/components/Category/CategorySidebarToggler.vue +9 -9
  47. package/src/components/Category/CategoryTile.astro +49 -49
  48. package/src/components/Category/SubCategoryLink.vue +29 -29
  49. package/src/components/CategoryLink.astro +18 -18
  50. package/src/components/Copyright.astro +12 -12
  51. package/src/components/Date.astro +7 -7
  52. package/src/components/Faq.astro +33 -33
  53. package/src/components/FaqItem.astro +96 -96
  54. package/src/components/FeaturesList.vue +41 -41
  55. package/src/components/FuckRussia.vue +62 -62
  56. package/src/components/HandDrive.astro +29 -29
  57. package/src/components/Header/Header.astro +210 -210
  58. package/src/components/Header/SkipToContent.astro +1 -1
  59. package/src/components/Headline.vue +48 -48
  60. package/src/components/Image.astro +30 -30
  61. package/src/components/Jumbatron.vue +40 -40
  62. package/src/components/LeftSidebar.astro +53 -53
  63. package/src/components/MainColors.vue +23 -23
  64. package/src/components/MainInput.vue +15 -15
  65. package/src/components/Modal.astro +27 -27
  66. package/src/components/PageContent.astro +5 -5
  67. package/src/components/PartNumber.vue +27 -27
  68. package/src/components/PostHeader.astro +103 -103
  69. package/src/components/PrCode.vue +141 -141
  70. package/src/components/Product/ProductButton.vue +18 -18
  71. package/src/components/Product/ProductCarousel.astro +35 -35
  72. package/src/components/Product/ProductCodes.vue +174 -174
  73. package/src/components/Product/ProductEngineType.vue +42 -42
  74. package/src/components/Product/ProductImage.astro +40 -40
  75. package/src/components/Product/ProductLink.astro +101 -101
  76. package/src/components/Product/ProductLink.vue +59 -59
  77. package/src/components/Product/ProductLinkInfo.astro +37 -37
  78. package/src/components/Product/ProductNumber.astro +61 -61
  79. package/src/components/ProductCarousel.astro +38 -38
  80. package/src/components/ProductCodes.vue +39 -39
  81. package/src/components/ProductDetailName.vue +52 -52
  82. package/src/components/ProductDetailsList.vue +65 -65
  83. package/src/components/ProductTile.astro +48 -48
  84. package/src/components/Quote.vue +23 -23
  85. package/src/components/ReloadPrompt.astro +50 -50
  86. package/src/components/SlimBanner.vue +72 -72
  87. package/src/components/Table.vue +32 -32
  88. package/src/components/TableOfContents.astro +15 -15
  89. package/src/components/Translations.vue +23 -23
  90. package/src/components/flags/FlagPL.vue +3 -3
  91. package/src/components/flags/FlagUA.vue +2 -2
  92. package/src/components/layout/Container.astro +7 -7
  93. package/src/components/layout/Header.astro +80 -80
  94. package/src/config.ts +56 -56
  95. package/src/design.config.ts +81 -81
  96. package/src/env.d.ts +7 -2
  97. package/src/layouts/Layout.astro +60 -60
  98. package/src/layouts/MainLayout.astro +81 -81
  99. package/src/layouts/partials/FooterCommon.astro +4 -4
  100. package/src/layouts/partials/HeadCommon.astro +44 -44
  101. package/src/layouts/partials/HeadSEO.astro +41 -41
  102. package/src/pages/components/badges.mdx +57 -57
  103. package/src/pages/components/breadcrumbs.mdx +139 -139
  104. package/src/pages/components/buttons.mdx +253 -253
  105. package/src/pages/components/card.mdx +294 -294
  106. package/src/pages/components/carousel.mdx +62 -62
  107. package/src/pages/components/copyright.mdx +42 -42
  108. package/src/pages/components/details-list.mdx +115 -115
  109. package/src/pages/components/features-list.mdx +37 -37
  110. package/src/pages/components/flags.mdx +49 -49
  111. package/src/pages/components/fuck-russia.mdx +39 -39
  112. package/src/pages/components/hand-drive.mdx +38 -38
  113. package/src/pages/components/headline.mdx +152 -152
  114. package/src/pages/components/icons.astro +48 -48
  115. package/src/pages/components/image.mdx +513 -513
  116. package/src/pages/components/input.mdx +45 -45
  117. package/src/pages/components/jumbatron.mdx +95 -95
  118. package/src/pages/components/modal.mdx +64 -64
  119. package/src/pages/components/post-header.mdx +60 -60
  120. package/src/pages/components/pr-code.mdx +65 -65
  121. package/src/pages/components/product-number.mdx +58 -58
  122. package/src/pages/components/product-tile.mdx +51 -51
  123. package/src/pages/components/quote.mdx +33 -33
  124. package/src/pages/components/slimbanner.mdx +35 -35
  125. package/src/pages/components/table.mdx +108 -108
  126. package/src/pages/core/colors.mdx +10 -10
  127. package/src/pages/core/grid.mdx +89 -89
  128. package/src/pages/core/introduction.mdx +77 -77
  129. package/src/pages/core/shadows.astro +20 -20
  130. package/src/pages/core/typography.astro +47 -47
  131. package/src/pages/index.astro +126 -126
  132. package/src/pages/patterns/introduction.mdx +60 -60
  133. package/src/pwa.ts +12 -12
  134. package/src/styles/_variables.scss +70 -70
  135. package/src/styles/base/base.css +184 -184
  136. package/src/styles/base/grid.css +92 -92
  137. package/src/styles/base/typography.css +70 -70
  138. package/src/styles/content.css +73 -73
  139. package/src/styles/main.css +7 -7
  140. package/src/types/Product.ts +31 -31
  141. package/src/types/astro.d.ts +3 -3
  142. package/src/utils/product/getPriceFormatted.ts +15 -15
  143. package/src/utils/product/getProductChecklist.ts +17 -17
  144. package/src/utils/product/useFormatProductNumber.ts +41 -41
  145. package/src/utils/seo/getShorterDescription.ts +14 -14
  146. package/src/utils/text/formatDate.ts +5 -5
  147. package/src/utils/text/formatLocaleNumber.ts +6 -6
  148. package/src/utils/text/formatPad.ts +12 -12
  149. package/src/utils/text/getNumberFormatted.ts +33 -33
  150. package/src/utils/text/getTranslatedLink.ts +5 -5
  151. package/src/utils/text.ts +19 -28
  152. package/tailwind.config.cjs +8 -8
  153. package/tsconfig.json +28 -28
  154. package/uno.config.ts +250 -250
  155. package/src/components/Category/CategoriesSidebar.astro +0 -187
  156. package/src/components/Category/CategorySection.astro +0 -70
@@ -1,210 +1,210 @@
1
- ---
2
- import { SITE } from "../../config";
3
- import SkipToContent from "./SkipToContent.astro";
4
- import { MenuIcon } from "astro-navbar";
5
- import Search from "astro-pagefind/components/Search";
6
- ---
7
-
8
- <header
9
- class="p-3 bg-blue-600 bg-opacity-10 backdrop-blur-md border-b text-slate-900"
10
- >
11
- <SkipToContent />
12
- <nav
13
- title="Top Navigation"
14
- class="mx-auto flex justify-between items-center px-4"
15
- >
16
- <div class="flex flex-nowrap">
17
- <MenuIcon class="w-4 h-4 text-gray-800 lg:hidden mr-4" />
18
- <a class="text-2xl font-medium block font-textbold leading-none block my-auto text-blue-600" href="/"> SDS</a>
19
- <Search
20
- transition:persist
21
- transition:name="search-field"
22
- className="search-container"
23
- id="search"
24
- uiOptions={{
25
- showImages: false,
26
- showFilters: false,
27
- resetStyles: true,
28
- }}
29
- />
30
- </div>
31
- <div class="flex gap-2">
32
- {
33
- SITE.github && (
34
- <a
35
- title="Github"
36
- class="opacity-80 hover:opacity-100 hover:bg-slate-200 p-2 rounded-full transition-colors"
37
- href={"https://github.com/" + SITE.github}
38
- >
39
- <img class="h-7" src="/github.svg" alt="github logo" />
40
- </a>
41
- )
42
- }
43
- {
44
- SITE.linkedin && (
45
- <a
46
- title="linkedin"
47
- class="opacity-80 hover:opacity-100 hover:bg-blue-50 p-2 rounded-full transition-colors"
48
- href={"https://linkedin.com/in/" + SITE.linkedin}
49
- >
50
- <img class="h-7" src="/linkedin.svg" alt="linkedin logo" />
51
- </a>
52
- )
53
- }
54
- </div>
55
- </nav>
56
- </header>
57
-
58
- <style is:global>
59
- #search {
60
- @apply ml-6;
61
- }
62
-
63
- .search-container {
64
- box-sizing: border-box;
65
- @apply h-10 border-0 border-gray-800 rounded-3xl hidden md:block;
66
- }
67
-
68
- .pagefind-ui {
69
- @apply font-textlight text-base;
70
- }
71
-
72
- .pagefind-ui__search-input {
73
- height: 40px !important;
74
- border: 0;
75
- @apply rounded-none sm:rounded-3xl h-10 w-full;
76
- }
77
-
78
- .pagefind-ui__result-excerpt,
79
- .pagefind-ui__button {
80
- font-size: 14px !important;
81
- }
82
-
83
- .pagefind-ui__filter-name {
84
- font-size: 12px !important;
85
- }
86
-
87
- .pagefind-ui__drawer:not(.pagefind-ui__hidden) {
88
- @apply p-4;
89
- }
90
-
91
- .pagefind-ui__result-link {
92
- color: var(--pagefind-ui-primary);
93
- font-family: vw_headlight;
94
- font-size: 1rem;
95
- }
96
-
97
- .pagefind-ui__result-link::before {
98
- top: 0;
99
- bottom: 0;
100
- left: 0;
101
- right: 0;
102
- content: "";
103
- position: absolute;
104
- }
105
-
106
- .pagefind-ui__result-excerpt {
107
- color: var(--pagefind-ui-text);
108
- order: 3;
109
- }
110
-
111
- .pagefind-ui__drawer {
112
- @apply bg-white md:fixed shadow-lg rounded-b-lg border-t border-t-transparent overflow-auto top-17 md:max-w-[calc(100vw-10%)] max-h-[calc(100vh-10%)] gap-[30px];
113
- }
114
-
115
- .pagefind-ui__search-clear {
116
- height: 38px;
117
- top: 0;
118
- @apply sm:rounded-3xl;
119
- }
120
-
121
- .pagefind-ui__search-input {
122
- font-size: 1rem;
123
- font-weight: 400;
124
- padding: 0 2.5rem 2px;
125
- }
126
-
127
- .pagefind-ui__form::before {
128
- top: 14px;
129
- left: 16px;
130
- width: 14px;
131
- height: 14px;
132
- }
133
-
134
- .pagefind-ui__result {
135
- padding: 0.875rem 0;
136
- gap: 1rem;
137
- @apply relative;
138
- }
139
-
140
- .pagefind-ui__filter-block {
141
- padding: 0.875rem 0;
142
- border-width: 1px;
143
- }
144
-
145
- .pagefind-ui__filter-group {
146
- gap: 0.5rem;
147
- padding-top: 0.875rem;
148
- }
149
-
150
- .pagefind-ui__filter-value {
151
- gap: 10px;
152
- }
153
-
154
- .pagefind-ui__filter-checkbox {
155
- border-radius: 3px;
156
- margin-top: 1px;
157
- min-width: calc(16px * var(--pagefind-ui-scale));
158
- }
159
-
160
- .pagefind-ui__result-image {
161
- @apply drop-shadow-sm w-full h-full object-contain rounded-none;
162
- }
163
-
164
- .pagefind-ui__filter-panel {
165
- @apply hidden;
166
- }
167
-
168
- .pagefind-ui__filter-label {
169
- font-size: 0.9rem;
170
- }
171
-
172
- .pagefind-ui__button {
173
- font-weight: 400;
174
- height: 40px;
175
- }
176
-
177
- .pagefind-ui__result-tag {
178
- background: inherit;
179
- padding: 0;
180
- color: #9ca3af;
181
- }
182
-
183
- .pagefind-ui__result-thumb {
184
- max-width: 120px;
185
- }
186
-
187
- .pagefind-ui__result-tags {
188
- margin-top: 0.4rem;
189
- order: 2;
190
- }
191
-
192
- .pagefind-ui__filter-name::after {
193
- color: var(--pagefind-ui-primary);
194
- }
195
-
196
- .pagefind-ui__result-title {
197
- font-size: inherit;
198
- line-height: 1;
199
- }
200
-
201
- .pagefind-ui__filter-panel,
202
- .pagefind-ui__results-area {
203
- margin-top: 0;
204
- }
205
-
206
- .pagefind-ui__message {
207
- padding: 0.875rem 0;
208
- }
209
-
210
- </style>
1
+ ---
2
+ import { SITE } from "../../config";
3
+ import SkipToContent from "./SkipToContent.astro";
4
+ import { MenuIcon } from "astro-navbar";
5
+ import Search from "astro-pagefind/components/Search";
6
+ ---
7
+
8
+ <header
9
+ class="p-3 bg-blue-600 bg-opacity-10 backdrop-blur-md border-b text-slate-900"
10
+ >
11
+ <SkipToContent />
12
+ <nav
13
+ title="Top Navigation"
14
+ class="mx-auto flex justify-between items-center px-4"
15
+ >
16
+ <div class="flex flex-nowrap">
17
+ <MenuIcon class="w-4 h-4 text-gray-800 lg:hidden mr-4" />
18
+ <a class="text-2xl font-medium block font-textbold leading-none block my-auto text-blue-600" href="/"> SDS</a>
19
+ <Search
20
+ transition:persist
21
+ transition:name="search-field"
22
+ className="search-container"
23
+ id="search"
24
+ uiOptions={{
25
+ showImages: false,
26
+ showFilters: false,
27
+ resetStyles: true,
28
+ }}
29
+ />
30
+ </div>
31
+ <div class="flex gap-2">
32
+ {
33
+ SITE.github && (
34
+ <a
35
+ title="Github"
36
+ class="opacity-80 hover:opacity-100 hover:bg-slate-200 p-2 rounded-full transition-colors"
37
+ href={"https://github.com/" + SITE.github}
38
+ >
39
+ <img class="h-7" src="/github.svg" alt="github logo" />
40
+ </a>
41
+ )
42
+ }
43
+ {
44
+ SITE.linkedin && (
45
+ <a
46
+ title="linkedin"
47
+ class="opacity-80 hover:opacity-100 hover:bg-blue-50 p-2 rounded-full transition-colors"
48
+ href={"https://linkedin.com/in/" + SITE.linkedin}
49
+ >
50
+ <img class="h-7" src="/linkedin.svg" alt="linkedin logo" />
51
+ </a>
52
+ )
53
+ }
54
+ </div>
55
+ </nav>
56
+ </header>
57
+
58
+ <style is:global>
59
+ #search {
60
+ @apply ml-6;
61
+ }
62
+
63
+ .search-container {
64
+ box-sizing: border-box;
65
+ @apply h-10 border-0 border-gray-800 rounded-3xl hidden md:block;
66
+ }
67
+
68
+ .pagefind-ui {
69
+ @apply font-textlight text-base;
70
+ }
71
+
72
+ .pagefind-ui__search-input {
73
+ height: 40px !important;
74
+ border: 0;
75
+ @apply rounded-none sm:rounded-3xl h-10 w-full;
76
+ }
77
+
78
+ .pagefind-ui__result-excerpt,
79
+ .pagefind-ui__button {
80
+ font-size: 14px !important;
81
+ }
82
+
83
+ .pagefind-ui__filter-name {
84
+ font-size: 12px !important;
85
+ }
86
+
87
+ .pagefind-ui__drawer:not(.pagefind-ui__hidden) {
88
+ @apply p-4;
89
+ }
90
+
91
+ .pagefind-ui__result-link {
92
+ color: var(--pagefind-ui-primary);
93
+ font-family: vw_headlight;
94
+ font-size: 1rem;
95
+ }
96
+
97
+ .pagefind-ui__result-link::before {
98
+ top: 0;
99
+ bottom: 0;
100
+ left: 0;
101
+ right: 0;
102
+ content: "";
103
+ position: absolute;
104
+ }
105
+
106
+ .pagefind-ui__result-excerpt {
107
+ color: var(--pagefind-ui-text);
108
+ order: 3;
109
+ }
110
+
111
+ .pagefind-ui__drawer {
112
+ @apply bg-white md:fixed shadow-lg rounded-b-lg border-t border-t-transparent overflow-auto top-17 md:max-w-[calc(100vw-10%)] max-h-[calc(100vh-10%)] gap-[30px];
113
+ }
114
+
115
+ .pagefind-ui__search-clear {
116
+ height: 38px;
117
+ top: 0;
118
+ @apply sm:rounded-3xl;
119
+ }
120
+
121
+ .pagefind-ui__search-input {
122
+ font-size: 1rem;
123
+ font-weight: 400;
124
+ padding: 0 2.5rem 2px;
125
+ }
126
+
127
+ .pagefind-ui__form::before {
128
+ top: 14px;
129
+ left: 16px;
130
+ width: 14px;
131
+ height: 14px;
132
+ }
133
+
134
+ .pagefind-ui__result {
135
+ padding: 0.875rem 0;
136
+ gap: 1rem;
137
+ @apply relative;
138
+ }
139
+
140
+ .pagefind-ui__filter-block {
141
+ padding: 0.875rem 0;
142
+ border-width: 1px;
143
+ }
144
+
145
+ .pagefind-ui__filter-group {
146
+ gap: 0.5rem;
147
+ padding-top: 0.875rem;
148
+ }
149
+
150
+ .pagefind-ui__filter-value {
151
+ gap: 10px;
152
+ }
153
+
154
+ .pagefind-ui__filter-checkbox {
155
+ border-radius: 3px;
156
+ margin-top: 1px;
157
+ min-width: calc(16px * var(--pagefind-ui-scale));
158
+ }
159
+
160
+ .pagefind-ui__result-image {
161
+ @apply drop-shadow-sm w-full h-full object-contain rounded-none;
162
+ }
163
+
164
+ .pagefind-ui__filter-panel {
165
+ @apply hidden;
166
+ }
167
+
168
+ .pagefind-ui__filter-label {
169
+ font-size: 0.9rem;
170
+ }
171
+
172
+ .pagefind-ui__button {
173
+ font-weight: 400;
174
+ height: 40px;
175
+ }
176
+
177
+ .pagefind-ui__result-tag {
178
+ background: inherit;
179
+ padding: 0;
180
+ color: #9ca3af;
181
+ }
182
+
183
+ .pagefind-ui__result-thumb {
184
+ max-width: 120px;
185
+ }
186
+
187
+ .pagefind-ui__result-tags {
188
+ margin-top: 0.4rem;
189
+ order: 2;
190
+ }
191
+
192
+ .pagefind-ui__filter-name::after {
193
+ color: var(--pagefind-ui-primary);
194
+ }
195
+
196
+ .pagefind-ui__result-title {
197
+ font-size: inherit;
198
+ line-height: 1;
199
+ }
200
+
201
+ .pagefind-ui__filter-panel,
202
+ .pagefind-ui__results-area {
203
+ margin-top: 0;
204
+ }
205
+
206
+ .pagefind-ui__message {
207
+ padding: 0.875rem 0;
208
+ }
209
+
210
+ </style>
@@ -1 +1 @@
1
- <a href="#article" class="sr-only focus:not-sr-only skiplink"><span>Skip to Content</span></a>
1
+ <a href="#article" class="sr-only focus:not-sr-only skiplink"><span>Skip to Content</span></a>
@@ -1,48 +1,48 @@
1
- <script setup lang="ts">
2
- import type { PropType } from 'vue'
3
-
4
- const props = defineProps({
5
- as: {
6
- type: String as PropType<'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'p' | 'div' | 'span'>,
7
- default: 'span',
8
- required: true,
9
- },
10
- textSize: {
11
- type: String as PropType<'xs' | 'sm' | 'base' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl' | '5xl' | '6xl' | '7xl' | '8xl' | '9xl'>,
12
- required: false,
13
- default: null
14
- },
15
- underline: {
16
- type: Boolean,
17
- required: false,
18
- default: false
19
- }
20
- })
21
- </script>
22
-
23
- <template>
24
- <component :is="props.as" class="mb-2.5 flex sm:block md:flex items-center leading-none"
25
- :class="`headline ${props.textSize ? `text-${props.textSize}` : 'text-xl'} ${props.underline ? 'headline--underline' : ''}`">
26
- <slot />
27
- </component>
28
- </template>
29
-
30
- <style>
31
- .headline--underline {
32
- @apply relative pb-4;
33
-
34
- &:after {
35
- @apply content-empty absolute left-0 bottom-0;
36
- height: 3px;
37
- width: 55px;
38
- background-color: var(--clr-primary-400);
39
- }
40
-
41
- &:before {
42
- @apply content-empty absolute left-0 bottom-px h-px;
43
- width: 95%;
44
- max-width: 255px;
45
- background-color: #64748b
46
- }
47
- }
48
- </style>
1
+ <script setup lang="ts">
2
+ import type { PropType } from 'vue'
3
+
4
+ const props = defineProps({
5
+ as: {
6
+ type: String as PropType<'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'p' | 'div' | 'span'>,
7
+ default: 'span',
8
+ required: true,
9
+ },
10
+ textSize: {
11
+ type: String as PropType<'xs' | 'sm' | 'base' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl' | '5xl' | '6xl' | '7xl' | '8xl' | '9xl'>,
12
+ required: false,
13
+ default: null
14
+ },
15
+ underline: {
16
+ type: Boolean,
17
+ required: false,
18
+ default: false
19
+ }
20
+ })
21
+ </script>
22
+
23
+ <template>
24
+ <component :is="props.as" class="mb-2.5 flex sm:block md:flex items-center leading-none"
25
+ :class="`headline ${props.textSize ? `text-${props.textSize}` : 'text-xl'} ${props.underline ? 'headline--underline' : ''}`">
26
+ <slot />
27
+ </component>
28
+ </template>
29
+
30
+ <style>
31
+ .headline--underline {
32
+ @apply relative pb-4;
33
+
34
+ &:after {
35
+ @apply content-empty absolute left-0 bottom-0;
36
+ height: 3px;
37
+ width: 55px;
38
+ background-color: var(--clr-primary-400);
39
+ }
40
+
41
+ &:before {
42
+ @apply content-empty absolute left-0 bottom-px h-px;
43
+ width: 95%;
44
+ max-width: 255px;
45
+ background-color: #64748b
46
+ }
47
+ }
48
+ </style>
@@ -1,30 +1,30 @@
1
- ---
2
- import { Image } from "astro:assets";
3
-
4
- const { imageObject } = Astro.props;
5
- let inputProps = {};
6
-
7
- if (imageObject.index && imageObject.index === 1) {
8
- inputProps["data-pagefind-meta"] = "image[src], image_alt[alt]";
9
- inputProps["loading"] = "eager";
10
- }
11
-
12
- if (imageObject.srcset && imageObject.srcset.length) {
13
- inputProps["widths"] = imageObject.srcset;
14
- }
15
- ---
16
-
17
- <Image
18
- src={imageObject.src}
19
- alt={imageObject.alt}
20
- height={imageObject.height}
21
- width={imageObject.width}
22
- itemprop="image"
23
- format="avif"
24
- data-pagefind-index-attrs="alt"
25
- onerror="this.style.display='none';"
26
- class={`h-full w-full select-none pointer-none ${
27
- imageObject.class || "object-cover"
28
- }`}
29
- {...inputProps}
30
- />
1
+ ---
2
+ import { Image } from "astro:assets";
3
+
4
+ const { imageObject } = Astro.props;
5
+ let inputProps = {};
6
+
7
+ if (imageObject.index && imageObject.index === 1) {
8
+ inputProps["data-pagefind-meta"] = "image[src], image_alt[alt]";
9
+ inputProps["loading"] = "eager";
10
+ }
11
+
12
+ if (imageObject.srcset && imageObject.srcset.length) {
13
+ inputProps["widths"] = imageObject.srcset;
14
+ }
15
+ ---
16
+
17
+ <Image
18
+ src={imageObject.src}
19
+ alt={imageObject.alt}
20
+ height={imageObject.height}
21
+ width={imageObject.width}
22
+ itemprop="image"
23
+ format="avif"
24
+ data-pagefind-index-attrs="alt"
25
+ onerror="this.style.display='none';"
26
+ class={`h-full w-full select-none pointer-none ${
27
+ imageObject.class || "object-cover"
28
+ }`}
29
+ {...inputProps}
30
+ />
@@ -1,41 +1,41 @@
1
- <script setup lang="ts">
2
- import { useSlots } from 'vue';
3
-
4
- const slots = useSlots()
5
- const hasSlot = (name) => {
6
- return !!slots[name];
7
- }
8
- const props = defineProps({
9
- small: {
10
- type: Boolean,
11
- default: null,
12
- required: false,
13
- },
14
- intro: {
15
- type: String,
16
- default: '',
17
- required: false,
18
- }
19
- })
20
- </script>
21
-
22
- <template>
23
- <header class="relative flow content-grid bg-vw mx-auto my-auto py-8 lg:w-full text-center" :class="props.small ? 'md:min-h-xs sm:py-12 md:py-14 lg:py-16 xl:py-20' : 'md:min-h-md sm:py-16 md:py-20 lg:py-28 xl:py-32'">
24
-
25
- <slot name="intro">
26
- <h1 class="text-3xl headline-light text-white sm:(text-4xl pt-0) md:text-5xl lg:text-6xl " v-html="props.intro" />
27
- </slot>
28
-
29
- <slot name="subtitle" />
30
- <div class="mt-5 sm:(mt-8 flex justify-center)" v-if="hasSlot('cta')">
31
- <slot name="cta" />
32
- </div>
33
- </header>
34
- </template>
35
- <style>
36
- .bg-vw {
37
- background: radial-gradient(circle at 50% 85%,
38
- #00437A 0%,
39
- #001E50 100%)
40
- }
1
+ <script setup lang="ts">
2
+ import { useSlots } from 'vue';
3
+
4
+ const slots = useSlots()
5
+ const hasSlot = (name) => {
6
+ return !!slots[name];
7
+ }
8
+ const props = defineProps({
9
+ small: {
10
+ type: Boolean,
11
+ default: null,
12
+ required: false,
13
+ },
14
+ intro: {
15
+ type: String,
16
+ default: '',
17
+ required: false,
18
+ }
19
+ })
20
+ </script>
21
+
22
+ <template>
23
+ <header class="relative flow content-grid bg-vw mx-auto my-auto py-8 lg:w-full text-center" :class="props.small ? 'md:min-h-xs sm:py-12 md:py-14 lg:py-16 xl:py-20' : 'md:min-h-md sm:py-16 md:py-20 lg:py-28 xl:py-32'">
24
+
25
+ <slot name="intro">
26
+ <h1 class="text-3xl headline-light text-white sm:(text-4xl pt-0) md:text-5xl lg:text-6xl " v-html="props.intro" />
27
+ </slot>
28
+
29
+ <slot name="subtitle" />
30
+ <div class="mt-5 sm:(mt-8 flex justify-center)" v-if="hasSlot('cta')">
31
+ <slot name="cta" />
32
+ </div>
33
+ </header>
34
+ </template>
35
+ <style>
36
+ .bg-vw {
37
+ background: radial-gradient(circle at 50% 85%,
38
+ #00437A 0%,
39
+ #001E50 100%)
40
+ }
41
41
  </style>