spoko-design-system 1.3.3 → 1.3.4
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.
- package/.github/workflows/claude.yml +1 -1
- package/.prettierrc +1 -0
- package/CHANGELOG.md +6 -0
- package/package.json +15 -15
- package/src/components/Breadcrumbs.vue +8 -5
- package/src/components/ButtonCopy.astro +7 -2
- package/src/components/Card.astro +4 -1
- package/src/components/Category/CategoriesCarousel.astro +8 -2
- package/src/components/Category/CategoryDetails.astro +29 -9
- package/src/components/Category/CategoryTile.astro +11 -2
- package/src/components/Category/CategoryViewToggler.astro +8 -2
- package/src/components/Date.astro +4 -1
- package/src/components/FaqItem.astro +14 -3
- package/src/components/HandDrive.astro +5 -1
- package/src/components/Header/Header.astro +14 -3
- package/src/components/Header/SkipToContent.astro +5 -1
- package/src/components/Input.vue +3 -2
- package/src/components/Jumbotron/index.astro +37 -7
- package/src/components/Jumbotron/variants/Default.astro +4 -1
- package/src/components/Jumbotron/variants/Hero.astro +9 -2
- package/src/components/Jumbotron/variants/Post.astro +13 -3
- package/src/components/Jumbotron/variants/PostSplit.astro +13 -3
- package/src/components/Jumbotron.astro +12 -3
- package/src/components/LanguageSuggestion.astro +4 -1
- package/src/components/MainInput.vue +3 -2
- package/src/components/Modal.astro +9 -2
- package/src/components/PageContent.astro +4 -1
- package/src/components/PostHeader.astro +13 -3
- package/src/components/Product/ProductDetails.vue +2 -2
- package/src/components/Product/ProductLink.astro +17 -4
- package/src/components/Product/ProductLink.vue +3 -3
- package/src/components/Product/ProductLinkInfo.astro +12 -3
- package/src/components/Product/ProductModel.vue +2 -3
- package/src/components/Product/ProductNumber.astro +23 -5
- package/src/components/ProductDetailsList.vue +9 -6
- package/src/components/ProductTile.astro +13 -3
- package/src/components/ReloadPrompt.astro +5 -1
- package/src/components/SlimBanner.vue +6 -4
- package/src/components/layout/CallToAction.astro +4 -1
- package/src/components/layout/Header.astro +12 -2
- package/src/layouts/Layout.astro +9 -2
- package/src/layouts/MainLayout.astro +17 -4
- package/src/layouts/partials/HeadCommon.astro +24 -7
- package/src/layouts/partials/HeadSEO.astro +44 -11
- package/src/pages/components/icons.astro +4 -1
- package/src/pages/index.astro +58 -14
package/.prettierrc
CHANGED
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
## [1.3.4](https://github.com/polo-blue/sds/compare/v1.3.3...v1.3.4) (2025-10-07)
|
|
2
|
+
|
|
3
|
+
### Bug Fixes
|
|
4
|
+
|
|
5
|
+
* resolve Prettier parsing errors in CategoryDetails component ([75b309f](https://github.com/polo-blue/sds/commit/75b309f94dd77fe9cdf941f0f21ec1ec63e34dfc))
|
|
6
|
+
|
|
1
7
|
## [1.3.3](https://github.com/polo-blue/sds/compare/v1.3.2...v1.3.3) (2025-10-07)
|
|
2
8
|
|
|
3
9
|
### Bug Fixes
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "spoko-design-system",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.4",
|
|
4
4
|
"private": false,
|
|
5
5
|
"main": "./index.ts",
|
|
6
6
|
"module": "./index.ts",
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
"spoko design system"
|
|
52
52
|
],
|
|
53
53
|
"dependencies": {
|
|
54
|
-
"@algolia/client-search": "^5.
|
|
54
|
+
"@algolia/client-search": "^5.40.0",
|
|
55
55
|
"@astrojs/mdx": "^4.3.6",
|
|
56
56
|
"@astrojs/node": "^9.4.4",
|
|
57
57
|
"@astrojs/sitemap": "^3.6.0",
|
|
@@ -68,25 +68,25 @@
|
|
|
68
68
|
"@iconify-json/eos-icons": "^1.2.4",
|
|
69
69
|
"@iconify-json/et": "^1.2.1",
|
|
70
70
|
"@iconify-json/flowbite": "^1.2.7",
|
|
71
|
-
"@iconify-json/fluent": "^1.2.
|
|
71
|
+
"@iconify-json/fluent": "^1.2.32",
|
|
72
72
|
"@iconify-json/fluent-emoji": "1.2.6",
|
|
73
73
|
"@iconify-json/ic": "^1.2.4",
|
|
74
74
|
"@iconify-json/icon-park-outline": "^1.2.4",
|
|
75
75
|
"@iconify-json/la": "^1.2.1",
|
|
76
76
|
"@iconify-json/lucide": "^1.2.68",
|
|
77
|
-
"@iconify-json/material-symbols-light": "^1.2.
|
|
77
|
+
"@iconify-json/material-symbols-light": "^1.2.40",
|
|
78
78
|
"@iconify-json/mdi": "^1.2.3",
|
|
79
79
|
"@iconify-json/noto-v1": "^1.2.5",
|
|
80
80
|
"@iconify-json/octicon": "^1.2.14",
|
|
81
81
|
"@iconify-json/ph": "^1.2.2",
|
|
82
|
-
"@iconify-json/simple-icons": "^1.2.
|
|
82
|
+
"@iconify-json/simple-icons": "^1.2.54",
|
|
83
83
|
"@iconify-json/streamline": "^1.2.5",
|
|
84
84
|
"@iconify-json/streamline-emojis": "^1.2.4",
|
|
85
85
|
"@iconify-json/streamline-freehand-color": "^1.2.2",
|
|
86
86
|
"@iconify-json/system-uicons": "^1.2.4",
|
|
87
87
|
"@iconify-json/uil": "^1.2.3",
|
|
88
88
|
"@iconify-json/vscode-icons": "^1.2.30",
|
|
89
|
-
"@iconify/json": "^2.2.
|
|
89
|
+
"@iconify/json": "^2.2.392",
|
|
90
90
|
"@iconify/vue": "^5.0.0",
|
|
91
91
|
"@playform/compress": "^0.2.0",
|
|
92
92
|
"@playform/inline": "^0.1.2",
|
|
@@ -104,32 +104,32 @@
|
|
|
104
104
|
"astro-navbar": "^2.4.0",
|
|
105
105
|
"astro-pagefind": "^1.8.5",
|
|
106
106
|
"astro-remote": "^0.3.4",
|
|
107
|
-
"dotenv": "^17.2.
|
|
107
|
+
"dotenv": "^17.2.3",
|
|
108
108
|
"swiper": "^12.0.2",
|
|
109
109
|
"unocss": "66.5.2",
|
|
110
|
-
"vue": "^3.5.
|
|
110
|
+
"vue": "^3.5.22"
|
|
111
111
|
},
|
|
112
112
|
"devDependencies": {
|
|
113
113
|
"@semantic-release/changelog": "^6.0.3",
|
|
114
114
|
"@semantic-release/git": "^10.0.1",
|
|
115
115
|
"@types/gtag.js": "^0.0.20",
|
|
116
|
-
"@types/node": "^24.
|
|
117
|
-
"@typescript-eslint/eslint-plugin": "^8.
|
|
118
|
-
"@typescript-eslint/parser": "^8.
|
|
116
|
+
"@types/node": "^24.7.0",
|
|
117
|
+
"@typescript-eslint/eslint-plugin": "^8.46.0",
|
|
118
|
+
"@typescript-eslint/parser": "^8.46.0",
|
|
119
119
|
"@unocss/transformer-variant-group": "66.5.2",
|
|
120
120
|
"@vitejs/plugin-vue": "^6.0.1",
|
|
121
|
-
"@vue/compiler-sfc": "^3.5.
|
|
121
|
+
"@vue/compiler-sfc": "^3.5.22",
|
|
122
122
|
"@vue/eslint-config-typescript": "^14.6.0",
|
|
123
|
-
"astro": "^5.
|
|
123
|
+
"astro": "^5.14.1",
|
|
124
124
|
"conventional-changelog-conventionalcommits": "^9.1.0",
|
|
125
|
-
"eslint": "^9.
|
|
125
|
+
"eslint": "^9.37.0",
|
|
126
126
|
"eslint-plugin-astro": "^1.3.1",
|
|
127
127
|
"eslint-plugin-vue": "^10.5.0",
|
|
128
128
|
"prettier": "^3.6.2",
|
|
129
129
|
"prettier-plugin-astro": "^0.14.1",
|
|
130
130
|
"semantic-release": "^24.2.9",
|
|
131
131
|
"unocss": "^0.65.0",
|
|
132
|
-
"vite": "^7.1.
|
|
132
|
+
"vite": "^7.1.9"
|
|
133
133
|
},
|
|
134
134
|
"packageManager": "pnpm@10.17.1",
|
|
135
135
|
"pnpm": {
|
|
@@ -74,7 +74,7 @@ const isLast = (index: number) => {
|
|
|
74
74
|
<meta
|
|
75
75
|
itemprop="position"
|
|
76
76
|
content="1"
|
|
77
|
-
|
|
77
|
+
/>
|
|
78
78
|
</li>
|
|
79
79
|
<li
|
|
80
80
|
v-for="(crumb, index) in breadcrumbs"
|
|
@@ -87,7 +87,8 @@ const isLast = (index: number) => {
|
|
|
87
87
|
<span
|
|
88
88
|
v-if="index > 0 || props.showHome"
|
|
89
89
|
class="text-gray-400 px-1 py-4.25 sm:py-1"
|
|
90
|
-
|
|
90
|
+
>/</span
|
|
91
|
+
>
|
|
91
92
|
|
|
92
93
|
<a
|
|
93
94
|
v-if="!isLast(index)"
|
|
@@ -99,7 +100,8 @@ const isLast = (index: number) => {
|
|
|
99
100
|
<strong
|
|
100
101
|
class="font-normal"
|
|
101
102
|
itemprop="name"
|
|
102
|
-
|
|
103
|
+
>{{ crumb.name }}</strong
|
|
104
|
+
>
|
|
103
105
|
</a>
|
|
104
106
|
<a
|
|
105
107
|
v-else
|
|
@@ -116,14 +118,15 @@ const isLast = (index: number) => {
|
|
|
116
118
|
<b
|
|
117
119
|
v-if="productNumber"
|
|
118
120
|
class="hidden sm:inline font-normal ml-1"
|
|
119
|
-
|
|
121
|
+
> {{ productNumber }}</b
|
|
122
|
+
>
|
|
120
123
|
</span>
|
|
121
124
|
</a>
|
|
122
125
|
|
|
123
126
|
<meta
|
|
124
127
|
itemprop="position"
|
|
125
128
|
:content="String(props.showHome ? index + 2 : index + 1)"
|
|
126
|
-
|
|
129
|
+
/>
|
|
127
130
|
</li>
|
|
128
131
|
</ul>
|
|
129
132
|
</nav>
|
|
@@ -25,8 +25,13 @@ const COPY_ICON = `url("data:image/svg+xml;utf8,${encodeURIComponent(
|
|
|
25
25
|
<span
|
|
26
26
|
class:list={['tooltip rounded-full btn-copy-text', tooltipClasses]}
|
|
27
27
|
data-text={texts.copy}
|
|
28
|
-
data-copied-text={texts.copied}
|
|
29
|
-
|
|
28
|
+
data-copied-text={texts.copied}
|
|
29
|
+
></span>
|
|
30
|
+
<span
|
|
31
|
+
class="copy-icon"
|
|
32
|
+
role="img"
|
|
33
|
+
aria-hidden="true"
|
|
34
|
+
></span>
|
|
30
35
|
</button>
|
|
31
36
|
|
|
32
37
|
<script>
|
|
@@ -5,7 +5,10 @@ import Image from '../components/Image.astro';
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
<div class="bg-white border border-gray-200 rounded-lg shadow overflow-hidden">
|
|
8
|
-
<a
|
|
8
|
+
<a
|
|
9
|
+
href={href}
|
|
10
|
+
class="aspect-ratio-video block relative"
|
|
11
|
+
>
|
|
9
12
|
{
|
|
10
13
|
imgSrc && (
|
|
11
14
|
<Image
|
|
@@ -45,7 +45,10 @@ const activeIndex =
|
|
|
45
45
|
role="presentation"
|
|
46
46
|
class={`swiper-slide cats-slide group ${category.slug === activeCategorySlug ? 'active' : ''}`}
|
|
47
47
|
>
|
|
48
|
-
<a
|
|
48
|
+
<a
|
|
49
|
+
href={getTranslatedLink(`/${category.slug}/`)}
|
|
50
|
+
class="carousel-item"
|
|
51
|
+
>
|
|
49
52
|
{
|
|
50
53
|
// itemprop="url"
|
|
51
54
|
// role="menuitem"
|
|
@@ -64,7 +67,10 @@ const activeIndex =
|
|
|
64
67
|
/>
|
|
65
68
|
<div class="swiper-lazy-preloader" />
|
|
66
69
|
|
|
67
|
-
<div
|
|
70
|
+
<div
|
|
71
|
+
class="cat-name"
|
|
72
|
+
itemprop="name"
|
|
73
|
+
>
|
|
68
74
|
{category.name}
|
|
69
75
|
</div>
|
|
70
76
|
</a>
|
|
@@ -3,10 +3,22 @@ import CategorySidebarToggler from './CategorySidebarToggler.vue';
|
|
|
3
3
|
import CategoryViewToggler from './CategoryViewToggler.astro';
|
|
4
4
|
import { Icon } from 'astro-icon/components';
|
|
5
5
|
|
|
6
|
-
const {
|
|
7
|
-
|
|
6
|
+
const {
|
|
7
|
+
category,
|
|
8
|
+
subcategory,
|
|
9
|
+
subtitle,
|
|
10
|
+
subsubtitle,
|
|
11
|
+
titleSmall,
|
|
12
|
+
showViewToggler,
|
|
13
|
+
viewerLabels,
|
|
14
|
+
locale,
|
|
15
|
+
} = Astro.props;
|
|
8
16
|
|
|
9
17
|
const baseURL = '';
|
|
18
|
+
const localePrefix = locale && locale !== 'en' ? `/${locale}` : '';
|
|
19
|
+
const categoryPath = category?.path || `${localePrefix}/${category.slug}`;
|
|
20
|
+
const subcategoryPath =
|
|
21
|
+
subcategory?.path || `${localePrefix}/${category.slug}/${subcategory?.slug}`;
|
|
10
22
|
---
|
|
11
23
|
|
|
12
24
|
<div
|
|
@@ -14,9 +26,11 @@ const baseURL = '';
|
|
|
14
26
|
transition:name="category-details"
|
|
15
27
|
transition:animate="fade"
|
|
16
28
|
>
|
|
17
|
-
<CategorySidebarToggler
|
|
29
|
+
<CategorySidebarToggler
|
|
30
|
+
class="category-sidebar-toggler w-12 md:w-8"
|
|
31
|
+
data-state="desktop"
|
|
32
|
+
>
|
|
18
33
|
<div class="desktop-icons hidden md:block">
|
|
19
|
-
<!-- Desktop icons container -->
|
|
20
34
|
<Icon
|
|
21
35
|
name="ant-design:menu-fold-outlined"
|
|
22
36
|
class="toggler-btn w-6 expanded-icon"
|
|
@@ -28,9 +42,12 @@ const baseURL = '';
|
|
|
28
42
|
aria-hidden="true"
|
|
29
43
|
/>
|
|
30
44
|
</div>
|
|
31
|
-
<!-- Mobile icon in separate container -->
|
|
32
45
|
<div class="mobile-icon block md:hidden">
|
|
33
|
-
<Icon
|
|
46
|
+
<Icon
|
|
47
|
+
name="ant-design:menu-outlined"
|
|
48
|
+
class="toggler-btn w-6"
|
|
49
|
+
aria-hidden="true"
|
|
50
|
+
/>
|
|
34
51
|
</div>
|
|
35
52
|
</CategorySidebarToggler>
|
|
36
53
|
|
|
@@ -40,7 +57,7 @@ const baseURL = '';
|
|
|
40
57
|
<>
|
|
41
58
|
<a
|
|
42
59
|
class="text-lg font-vw-headregular whitespace-nowrap block"
|
|
43
|
-
href={
|
|
60
|
+
href={categoryPath}
|
|
44
61
|
>
|
|
45
62
|
{category.name}
|
|
46
63
|
{titleSmall && <small>{titleSmall}</small>}
|
|
@@ -53,7 +70,7 @@ const baseURL = '';
|
|
|
53
70
|
) : (
|
|
54
71
|
<>
|
|
55
72
|
<div class="text-lg py-2.5 sm:py-0 whitespace-nowrap">
|
|
56
|
-
<a href={
|
|
73
|
+
<a href={subcategoryPath}>{subtitle}</a>
|
|
57
74
|
</div>
|
|
58
75
|
<span class="text-neutral-lighter text-lg inline-block px-1 font-headlight">/</span>
|
|
59
76
|
<h1 class="text-lg py-2.5 sm:py-0 whitespace-nowrap underline underline-offset-6 decoration-blue-300 decoration-0.5">
|
|
@@ -74,7 +91,10 @@ const baseURL = '';
|
|
|
74
91
|
|
|
75
92
|
{
|
|
76
93
|
showViewToggler && (
|
|
77
|
-
<CategoryViewToggler
|
|
94
|
+
<CategoryViewToggler
|
|
95
|
+
{...viewerLabels}
|
|
96
|
+
class="hidden lg:flex items-center gap-2 ml-auto"
|
|
97
|
+
/>
|
|
78
98
|
)
|
|
79
99
|
}
|
|
80
100
|
</div>
|
|
@@ -22,7 +22,11 @@ const prefix = locale === 'en' ? '' : `${locale}/`;
|
|
|
22
22
|
const href = `/${prefix}${CategoryObject.slug}/`;
|
|
23
23
|
---
|
|
24
24
|
|
|
25
|
-
<a
|
|
25
|
+
<a
|
|
26
|
+
href={href}
|
|
27
|
+
class="carousel-item"
|
|
28
|
+
data-astro-prefetch
|
|
29
|
+
>
|
|
26
30
|
<Image
|
|
27
31
|
src={CategoryObject.photo}
|
|
28
32
|
alt={CategoryObject.alt}
|
|
@@ -34,5 +38,10 @@ const href = `/${prefix}${CategoryObject.slug}/`;
|
|
|
34
38
|
class="cats-img"
|
|
35
39
|
/>
|
|
36
40
|
<div class="swiper-lazy-preloader"></div>
|
|
37
|
-
<div
|
|
41
|
+
<div
|
|
42
|
+
class="cat-name"
|
|
43
|
+
itemprop="name"
|
|
44
|
+
>
|
|
45
|
+
{CategoryObject.name}
|
|
46
|
+
</div>
|
|
38
47
|
</a>
|
|
@@ -29,7 +29,10 @@ const {
|
|
|
29
29
|
class="view-toggle flex items-center gap-1 px-3 py-0.5 transition-colors"
|
|
30
30
|
aria-label={listAriaLabel}
|
|
31
31
|
>
|
|
32
|
-
<Icon
|
|
32
|
+
<Icon
|
|
33
|
+
name="ant-design:bars-outlined"
|
|
34
|
+
class="w-4 h-4"
|
|
35
|
+
/>
|
|
33
36
|
<span class="text-sm">{listText}</span>
|
|
34
37
|
</button>
|
|
35
38
|
<button
|
|
@@ -38,7 +41,10 @@ const {
|
|
|
38
41
|
class="view-toggle flex items-center gap-1 px-3 py-0.5 transition-colors"
|
|
39
42
|
aria-label={gridAriaLabel}
|
|
40
43
|
>
|
|
41
|
-
<Icon
|
|
44
|
+
<Icon
|
|
45
|
+
name="ant-design:appstore-outlined"
|
|
46
|
+
class="w-4 h-4"
|
|
47
|
+
/>
|
|
42
48
|
<span class="text-sm">{gridText}</span>
|
|
43
49
|
</button>
|
|
44
50
|
</div>
|
|
@@ -23,10 +23,21 @@ const { data } = Astro.props;
|
|
|
23
23
|
class="py-2 outline-none cursor-pointer focus:underline text-xl font-500 relative items-center flex justify-between list-none
|
|
24
24
|
after:(block duration-200 content-empty bg-[url(/arrow-bottom.svg)] bg-contain bg-center bg-no-repeat h-3 w-4 min-w-4 my-auto ml-4 opacity-60)"
|
|
25
25
|
>
|
|
26
|
-
<h2
|
|
26
|
+
<h2
|
|
27
|
+
itemprop="name"
|
|
28
|
+
class="font-headbold"
|
|
29
|
+
set:html={data.question}
|
|
30
|
+
/>
|
|
27
31
|
</summary>
|
|
28
|
-
<div
|
|
29
|
-
|
|
32
|
+
<div
|
|
33
|
+
itemscope
|
|
34
|
+
itemprop="acceptedAnswer"
|
|
35
|
+
itemtype="https://schema.org/Answer"
|
|
36
|
+
>
|
|
37
|
+
<div
|
|
38
|
+
itemprop="text"
|
|
39
|
+
class="px-0 pb-4"
|
|
40
|
+
>
|
|
30
41
|
<Markdown content={data.answer} />
|
|
31
42
|
</div>
|
|
32
43
|
</div>
|
|
@@ -28,7 +28,11 @@ if (!handDrive || (handDrive !== 'lhd' && handDrive !== 'rhd')) {
|
|
|
28
28
|
const titleText = title || handDrive.toUpperCase();
|
|
29
29
|
---
|
|
30
30
|
|
|
31
|
-
<div
|
|
31
|
+
<div
|
|
32
|
+
title={titleText}
|
|
33
|
+
class="flex items-center"
|
|
34
|
+
class:list={className}
|
|
35
|
+
>
|
|
32
36
|
<Image
|
|
33
37
|
src={handDriveImage}
|
|
34
38
|
alt={`${handDrive.toUpperCase()} hand drive`}
|
|
@@ -7,7 +7,10 @@ import Search from 'astro-pagefind/components/Search';
|
|
|
7
7
|
|
|
8
8
|
<header class="p-3 bg-blue-medium bg-opacity-10 backdrop-blur-md border-b text-slate-900">
|
|
9
9
|
<SkipToContent />
|
|
10
|
-
<nav
|
|
10
|
+
<nav
|
|
11
|
+
title="Top Navigation"
|
|
12
|
+
class="mx-auto flex justify-between items-center px-4"
|
|
13
|
+
>
|
|
11
14
|
<div class="flex flex-nowrap">
|
|
12
15
|
<MenuIcon class="w-4 h-4 text-gray-800 lg:hidden mr-4" />
|
|
13
16
|
<a
|
|
@@ -36,7 +39,11 @@ import Search from 'astro-pagefind/components/Search';
|
|
|
36
39
|
class="opacity-80 hover:opacity-100 hover:bg-slate-200 p-2 rounded-full transition-colors"
|
|
37
40
|
href={'https://github.com/' + SITE.github}
|
|
38
41
|
>
|
|
39
|
-
<img
|
|
42
|
+
<img
|
|
43
|
+
class="h-7"
|
|
44
|
+
src="/github.svg"
|
|
45
|
+
alt="github logo"
|
|
46
|
+
/>
|
|
40
47
|
</a>
|
|
41
48
|
)
|
|
42
49
|
}
|
|
@@ -47,7 +54,11 @@ import Search from 'astro-pagefind/components/Search';
|
|
|
47
54
|
class="opacity-80 hover:opacity-100 hover:bg-blue-50 p-2 rounded-full transition-colors"
|
|
48
55
|
href={'https://linkedin.com/in/' + SITE.linkedin}
|
|
49
56
|
>
|
|
50
|
-
<img
|
|
57
|
+
<img
|
|
58
|
+
class="h-7"
|
|
59
|
+
src="/linkedin.svg"
|
|
60
|
+
alt="linkedin logo"
|
|
61
|
+
/>
|
|
51
62
|
</a>
|
|
52
63
|
)
|
|
53
64
|
}
|
package/src/components/Input.vue
CHANGED
|
@@ -125,7 +125,7 @@ const handleBlur = (event: globalThis.FocusEvent) => emit('blur', event);
|
|
|
125
125
|
@input="handleInput"
|
|
126
126
|
@focus="handleFocus"
|
|
127
127
|
@blur="handleBlur"
|
|
128
|
-
|
|
128
|
+
/>
|
|
129
129
|
|
|
130
130
|
<label
|
|
131
131
|
:for="id"
|
|
@@ -136,7 +136,8 @@ const handleBlur = (event: globalThis.FocusEvent) => emit('blur', event);
|
|
|
136
136
|
<span
|
|
137
137
|
v-if="required"
|
|
138
138
|
class="text-red-500 ml-1"
|
|
139
|
-
|
|
139
|
+
>*</span
|
|
140
|
+
>
|
|
140
141
|
</label>
|
|
141
142
|
|
|
142
143
|
<div
|
|
@@ -64,25 +64,55 @@ const commonProps = {
|
|
|
64
64
|
|
|
65
65
|
{
|
|
66
66
|
variant === 'default' && (
|
|
67
|
-
<DefaultVariant
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
67
|
+
<DefaultVariant
|
|
68
|
+
{...commonProps}
|
|
69
|
+
small={small}
|
|
70
|
+
>
|
|
71
|
+
<slot
|
|
72
|
+
name="intro"
|
|
73
|
+
slot="intro"
|
|
74
|
+
/>
|
|
75
|
+
<slot
|
|
76
|
+
name="subtitle"
|
|
77
|
+
slot="subtitle"
|
|
78
|
+
/>
|
|
79
|
+
<slot
|
|
80
|
+
name="cta-content"
|
|
81
|
+
slot="cta-content"
|
|
82
|
+
/>
|
|
71
83
|
</DefaultVariant>
|
|
72
84
|
)
|
|
73
85
|
}
|
|
74
86
|
|
|
75
|
-
{
|
|
87
|
+
{
|
|
88
|
+
variant === 'hero' && (
|
|
89
|
+
<HeroVariant
|
|
90
|
+
{...commonProps}
|
|
91
|
+
description={description}
|
|
92
|
+
info={info}
|
|
93
|
+
/>
|
|
94
|
+
)
|
|
95
|
+
}
|
|
76
96
|
|
|
77
97
|
{
|
|
78
98
|
variant === 'post' && (
|
|
79
|
-
<PostVariant
|
|
99
|
+
<PostVariant
|
|
100
|
+
{...commonProps}
|
|
101
|
+
author={author}
|
|
102
|
+
date={date}
|
|
103
|
+
categories={categories}
|
|
104
|
+
/>
|
|
80
105
|
)
|
|
81
106
|
}
|
|
82
107
|
|
|
83
108
|
{
|
|
84
109
|
variant === 'post-split' && (
|
|
85
|
-
<PostSplitVariant
|
|
110
|
+
<PostSplitVariant
|
|
111
|
+
{...commonProps}
|
|
112
|
+
author={author}
|
|
113
|
+
date={date}
|
|
114
|
+
categories={categories}
|
|
115
|
+
/>
|
|
86
116
|
)
|
|
87
117
|
}
|
|
88
118
|
|
|
@@ -16,7 +16,11 @@ const { title = '', image, description, info, backgroundClass } = Astro.props;
|
|
|
16
16
|
image && (
|
|
17
17
|
<div class="absolute inset-0 w-full h-full">
|
|
18
18
|
<div class="absolute inset-0 bg-gradient-to-r from-blue-900 to-transparent opacity-90 z-1" />
|
|
19
|
-
<img
|
|
19
|
+
<img
|
|
20
|
+
class="w-full h-full object-cover"
|
|
21
|
+
src={image}
|
|
22
|
+
alt={title}
|
|
23
|
+
/>
|
|
20
24
|
</div>
|
|
21
25
|
)
|
|
22
26
|
}
|
|
@@ -37,7 +41,10 @@ const { title = '', image, description, info, backgroundClass } = Astro.props;
|
|
|
37
41
|
}
|
|
38
42
|
{
|
|
39
43
|
info && (
|
|
40
|
-
<div
|
|
44
|
+
<div
|
|
45
|
+
class="font-medium mb-4 line-clamp-1 text-base sm:text-lg mt-2"
|
|
46
|
+
set:html={info}
|
|
47
|
+
/>
|
|
41
48
|
)
|
|
42
49
|
}
|
|
43
50
|
</header>
|
|
@@ -41,7 +41,10 @@ const {
|
|
|
41
41
|
{
|
|
42
42
|
hasCategories && (
|
|
43
43
|
<div class="order-1">
|
|
44
|
-
<PostCategories
|
|
44
|
+
<PostCategories
|
|
45
|
+
categories={categories}
|
|
46
|
+
lang={lang}
|
|
47
|
+
/>
|
|
45
48
|
</div>
|
|
46
49
|
)
|
|
47
50
|
}
|
|
@@ -50,7 +53,10 @@ const {
|
|
|
50
53
|
hasMetadata && (
|
|
51
54
|
<div class="order-3 flex items-center text-gray-100">
|
|
52
55
|
{author && (
|
|
53
|
-
<span
|
|
56
|
+
<span
|
|
57
|
+
class="text-sm"
|
|
58
|
+
title={author.firstName}
|
|
59
|
+
>
|
|
54
60
|
{author.name}
|
|
55
61
|
</span>
|
|
56
62
|
)}
|
|
@@ -63,6 +69,10 @@ const {
|
|
|
63
69
|
</div>
|
|
64
70
|
|
|
65
71
|
<div class="featured-image-overlay">
|
|
66
|
-
<img
|
|
72
|
+
<img
|
|
73
|
+
src={image}
|
|
74
|
+
alt={title}
|
|
75
|
+
class="w-full h-full object-cover block max-w-full"
|
|
76
|
+
/>
|
|
67
77
|
</div>
|
|
68
78
|
</header>
|
|
@@ -42,12 +42,18 @@ const cleanTitle = stripHtml(title);
|
|
|
42
42
|
class="heading flex flex-wrap text-white relative items-center justify-center mt-auto w-full z-[2]"
|
|
43
43
|
>
|
|
44
44
|
<div class="jumbotron-split-content">
|
|
45
|
-
<h1
|
|
45
|
+
<h1
|
|
46
|
+
class="jumbotron-split-title"
|
|
47
|
+
set:html={title}
|
|
48
|
+
/>
|
|
46
49
|
|
|
47
50
|
{
|
|
48
51
|
hasCategories && (
|
|
49
52
|
<div class="jumbotron-categories">
|
|
50
|
-
<PostCategories
|
|
53
|
+
<PostCategories
|
|
54
|
+
categories={categories}
|
|
55
|
+
lang={lang}
|
|
56
|
+
/>
|
|
51
57
|
</div>
|
|
52
58
|
)
|
|
53
59
|
}
|
|
@@ -56,7 +62,11 @@ const cleanTitle = stripHtml(title);
|
|
|
56
62
|
hasMetadata && (
|
|
57
63
|
<div class="jumbotron-split-meta">
|
|
58
64
|
{author && (
|
|
59
|
-
<span
|
|
65
|
+
<span
|
|
66
|
+
class="text-sm"
|
|
67
|
+
title={author.firstName}
|
|
68
|
+
data-pagefind-ignore
|
|
69
|
+
>
|
|
60
70
|
{author.name}
|
|
61
71
|
</span>
|
|
62
72
|
)}
|
|
@@ -6,7 +6,16 @@ const props = Astro.props as Props;
|
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
<BaseJumbotron {...props}>
|
|
9
|
-
<slot
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
<slot
|
|
10
|
+
name="intro"
|
|
11
|
+
slot="intro"
|
|
12
|
+
/>
|
|
13
|
+
<slot
|
|
14
|
+
name="subtitle"
|
|
15
|
+
slot="subtitle"
|
|
16
|
+
/>
|
|
17
|
+
<slot
|
|
18
|
+
name="cta-content"
|
|
19
|
+
slot="cta-content"
|
|
20
|
+
/>
|
|
12
21
|
</BaseJumbotron>
|