spoko-design-system 1.1.1 → 1.1.2
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/.claude/settings.local.json +2 -1
- package/.github/workflows/code-quality.yml +3 -3
- package/.prettierrc +1 -0
- package/CHANGELOG.md +6 -0
- package/package.json +8 -2
- package/src/MyComponent.astro +1 -1
- package/src/components/Badge.vue +2 -2
- package/src/components/Badges.vue +17 -7
- package/src/components/Breadcrumbs.vue +47 -39
- package/src/components/Button.vue +31 -30
- package/src/components/ButtonCopy.astro +12 -17
- package/src/components/ButtonCopy.vue +26 -25
- package/src/components/Card.astro +4 -6
- package/src/components/Carousel.astro +4 -4
- package/src/components/Category/CategoriesCarousel.astro +75 -75
- package/src/components/Category/CategoryDetails.astro +75 -79
- package/src/components/Category/CategoryLink.vue +8 -12
- package/src/components/Category/CategorySidebarToggler.vue +2 -7
- package/src/components/Category/CategoryTile.astro +3 -3
- package/src/components/Category/CategoryViewToggler.astro +18 -18
- package/src/components/Category/SubCategoryLink.vue +13 -13
- package/src/components/Faq.astro +16 -17
- package/src/components/FaqItem.astro +27 -27
- package/src/components/FeaturesList.vue +19 -29
- package/src/components/FuckRussia.vue +40 -27
- package/src/components/HandDrive.astro +11 -15
- package/src/components/Header/Header.astro +165 -166
- package/src/components/Header/SkipToContent.astro +1 -1
- package/src/components/Headline.vue +44 -27
- package/src/components/Image.astro +5 -7
- package/src/components/Input.vue +143 -153
- package/src/components/Jumbotron/index.astro +143 -156
- package/src/components/Jumbotron/types.ts +28 -29
- package/src/components/Jumbotron/variants/Default.astro +44 -40
- package/src/components/Jumbotron/variants/Hero.astro +45 -53
- package/src/components/Jumbotron/variants/Post.astro +68 -64
- package/src/components/Jumbotron/variants/PostSplit.astro +89 -81
- package/src/components/Jumbotron.astro +12 -12
- package/src/components/LanguageSuggestion.astro +66 -69
- package/src/components/LeftSidebar.astro +10 -10
- package/src/components/MainColors.vue +2 -2
- package/src/components/MainInput.vue +6 -3
- package/src/components/Modal.astro +2 -2
- package/src/components/PartNumber.vue +2 -3
- package/src/components/Post/PostCategories.astro +2 -4
- package/src/components/Post/PostCategories.vue +2 -2
- package/src/components/PostHeader.astro +4 -6
- package/src/components/PrCode.vue +20 -19
- package/src/components/Product/ProductButton.vue +2 -5
- package/src/components/Product/ProductCarousel.astro +38 -27
- package/src/components/Product/ProductColors.vue +46 -42
- package/src/components/Product/ProductDetailName.vue +22 -22
- package/src/components/Product/ProductDetails.vue +115 -99
- package/src/components/Product/ProductDoc.vue +27 -25
- package/src/components/Product/ProductEngineType.vue +13 -10
- package/src/components/Product/ProductImage.astro +18 -19
- package/src/components/Product/ProductLink.vue +55 -58
- package/src/components/Product/ProductLinkInfo.astro +15 -18
- package/src/components/Product/ProductModel.vue +25 -24
- package/src/components/Product/ProductModels.vue +29 -33
- package/src/components/Product/ProductName.vue +15 -15
- package/src/components/Product/ProductNumber.astro +23 -31
- package/src/components/Product/ProductPositions.vue +32 -34
- package/src/components/ProductCarousel.astro +5 -5
- package/src/components/ProductCodes.vue +12 -14
- package/src/components/ProductDetailName.vue +18 -20
- package/src/components/ProductDetailsList.vue +48 -27
- package/src/components/Quote.vue +8 -6
- package/src/components/ReloadPrompt.astro +39 -47
- package/src/components/SlimBanner.vue +44 -19
- package/src/components/Table.vue +4 -6
- package/src/components/Translations.vue +17 -8
- package/src/components/flags/FlagPL.vue +4 -3
- package/src/components/flags/FlagUA.vue +2 -2
- package/src/components/layout/CallToAction.astro +17 -12
- package/src/components/layout/Container.astro +3 -1
- package/src/components/layout/Header.astro +12 -21
- package/src/config.ts +43 -43
- package/src/design.config.ts +63 -63
- package/src/env.d.ts +4 -4
- package/src/layouts/Layout.astro +10 -19
- package/src/layouts/MainLayout.astro +13 -19
- package/src/layouts/partials/FooterCommon.astro +2 -2
- package/src/layouts/partials/HeadCommon.astro +9 -9
- package/src/layouts/partials/HeadSEO.astro +12 -5
- package/src/pages/components/icons.astro +130 -121
- package/src/pages/core/shadows.astro +18 -11
- package/src/pages/index.astro +178 -75
- package/src/pwa.ts +4 -4
- package/src/styles/base/base.css +14 -19
- package/src/styles/base/grid.css +54 -58
- package/src/styles/base/typography.css +40 -40
- package/src/styles/content.css +25 -23
- package/src/styles/main.css +5 -6
- package/src/types/Product.ts +31 -31
- package/src/types/astro.d.ts +1 -1
- package/src/types/index.ts +234 -237
- package/src/utils/api/getCategories.ts +9 -9
- package/src/utils/category/getMainCategoryList.ts +22 -22
- package/src/utils/category/getSortedCategories.ts +7 -11
- package/src/utils/product/getPriceFormatted.ts +14 -11
- package/src/utils/product/getProductChecklist.ts +10 -11
- package/src/utils/product/useFormatProductNumber.ts +18 -9
- package/src/utils/seo/getShorterDescription.ts +6 -4
- package/src/utils/text/formatDate.ts +2 -3
- package/src/utils/text/formatLocaleNumber.ts +2 -2
- package/src/utils/text/formatPad.ts +2 -2
- package/src/utils/text/getNumberFormatted.ts +10 -10
- package/src/utils/text/getTranslatedLink.ts +3 -3
- package/src/utils/text.ts +11 -8
package/src/config.ts
CHANGED
|
@@ -1,56 +1,56 @@
|
|
|
1
1
|
export const SITE = {
|
|
2
|
-
title:
|
|
3
|
-
description:
|
|
4
|
-
defaultLanguage:
|
|
5
|
-
twitter:
|
|
6
|
-
github:
|
|
7
|
-
linkedin:
|
|
2
|
+
title: 'Spoko Design System',
|
|
3
|
+
description: 'The Astro design system which facilitates the development of websites.',
|
|
4
|
+
defaultLanguage: 'en_US',
|
|
5
|
+
twitter: '@spokospace',
|
|
6
|
+
github: 'spokospace',
|
|
7
|
+
linkedin: 'szymonberski',
|
|
8
8
|
};
|
|
9
9
|
|
|
10
10
|
export const OPEN_GRAPH = {
|
|
11
11
|
image: {
|
|
12
|
-
src:
|
|
13
|
-
alt:
|
|
12
|
+
src: '',
|
|
13
|
+
alt: '',
|
|
14
14
|
},
|
|
15
|
-
twitter:
|
|
15
|
+
twitter: '',
|
|
16
16
|
};
|
|
17
17
|
|
|
18
18
|
export const SIDEBAR = [
|
|
19
|
-
{ text:
|
|
20
|
-
{ text:
|
|
21
|
-
{ text:
|
|
22
|
-
{ text:
|
|
23
|
-
{ text:
|
|
24
|
-
{ text:
|
|
19
|
+
{ text: 'Core', header: true },
|
|
20
|
+
{ text: 'Introduction', link: '/core/introduction/' },
|
|
21
|
+
{ text: 'Colors', link: '/core/colors/' },
|
|
22
|
+
{ text: 'Typography', link: '/core/typography/' },
|
|
23
|
+
{ text: 'Shadows', link: '/core/shadows/' },
|
|
24
|
+
{ text: 'Grid', link: '/core/grid/' },
|
|
25
25
|
|
|
26
|
-
{ text:
|
|
27
|
-
{ text:
|
|
28
|
-
{ text:
|
|
29
|
-
{ text:
|
|
30
|
-
{ text:
|
|
31
|
-
{ text:
|
|
32
|
-
{ text:
|
|
33
|
-
{ text:
|
|
34
|
-
{ text:
|
|
35
|
-
{ text:
|
|
36
|
-
{ text:
|
|
37
|
-
{ text:
|
|
38
|
-
{ text:
|
|
39
|
-
{ text:
|
|
40
|
-
{ text:
|
|
41
|
-
{ text:
|
|
42
|
-
{ text:
|
|
43
|
-
{ text:
|
|
44
|
-
{ text:
|
|
45
|
-
{ text:
|
|
46
|
-
{ text:
|
|
47
|
-
{ text:
|
|
26
|
+
{ text: 'Components', header: true },
|
|
27
|
+
{ text: 'Badges', link: '/components/badges/' },
|
|
28
|
+
{ text: 'Breadcrumbs', link: '/components/breadcrumbs/' },
|
|
29
|
+
{ text: 'Buttons', link: '/components/buttons/' },
|
|
30
|
+
{ text: 'Card', link: '/components/card/' },
|
|
31
|
+
{ text: 'Carousel', link: '/components/carousel/' },
|
|
32
|
+
{ text: 'Copyright', link: '/components/copyright/' },
|
|
33
|
+
{ text: 'Details List', link: '/components/details-list/' },
|
|
34
|
+
{ text: 'Features List', link: '/components/features-list/' },
|
|
35
|
+
{ text: 'HandDrive', link: '/components/hand-drive/' },
|
|
36
|
+
{ text: 'Headline', link: '/components/headline/' },
|
|
37
|
+
{ text: 'Icons', link: '/components/icons/' },
|
|
38
|
+
{ text: 'Image', link: '/components/image/' },
|
|
39
|
+
{ text: 'Input', link: '/components/input/' },
|
|
40
|
+
{ text: 'Jumbotron', link: '/components/jumbotron/' },
|
|
41
|
+
{ text: 'Modal', link: '/components/modal/' },
|
|
42
|
+
{ text: 'PostHeader', link: '/components/post-header/' },
|
|
43
|
+
{ text: 'PR-Code', link: '/components/pr-code/' },
|
|
44
|
+
{ text: 'Product Number', link: '/components/product-number/' },
|
|
45
|
+
{ text: 'Product Tile', link: '/components/product-tile/' },
|
|
46
|
+
{ text: 'Quote', link: '/components/quote/' },
|
|
47
|
+
{ text: 'Table', link: '/components/table/' },
|
|
48
48
|
|
|
49
|
-
{ text:
|
|
50
|
-
{ text:
|
|
51
|
-
{ text:
|
|
52
|
-
{ text:
|
|
49
|
+
{ text: 'Extras', header: true },
|
|
50
|
+
{ text: 'Flags', link: '/components/flags/' },
|
|
51
|
+
{ text: 'SlimBanner', link: '/components/slimbanner/' },
|
|
52
|
+
{ text: 'FuckRussia', link: '/components/fuck-russia/' },
|
|
53
53
|
|
|
54
|
-
{ text:
|
|
55
|
-
{ text:
|
|
54
|
+
{ text: 'Patterns', header: true },
|
|
55
|
+
{ text: 'Introduction', link: '/patterns/introduction/' },
|
|
56
56
|
];
|
package/src/design.config.ts
CHANGED
|
@@ -1,99 +1,99 @@
|
|
|
1
1
|
export const COLORS = {
|
|
2
2
|
// Brand Colors
|
|
3
3
|
brand: [
|
|
4
|
-
{ name:
|
|
5
|
-
{ name:
|
|
4
|
+
{ name: 'primary', value: '#0040c5' },
|
|
5
|
+
{ name: 'secondary', value: '#00b0f0' },
|
|
6
6
|
],
|
|
7
7
|
|
|
8
|
-
// Primary Blues
|
|
8
|
+
// Primary Blues
|
|
9
9
|
blue: [
|
|
10
|
-
{ name:
|
|
11
|
-
{ name:
|
|
12
|
-
{ name:
|
|
13
|
-
{ name:
|
|
14
|
-
{ name:
|
|
15
|
-
{ name:
|
|
16
|
-
{ name:
|
|
17
|
-
{ name:
|
|
10
|
+
{ name: 'ultralight', value: '#dbeafe' },
|
|
11
|
+
{ name: 'lightest', value: '#3b82f6' },
|
|
12
|
+
{ name: 'light', value: '#0069ff' },
|
|
13
|
+
{ name: 'default', value: '#005ad7' },
|
|
14
|
+
{ name: 'medium', value: '#02307d' },
|
|
15
|
+
{ name: 'darker', value: '#001e50' },
|
|
16
|
+
{ name: 'darkest', value: '#000f28' },
|
|
17
|
+
{ name: 'wrc', value: '#0000c8' },
|
|
18
18
|
],
|
|
19
19
|
|
|
20
20
|
// Accent Colors
|
|
21
21
|
accent: [
|
|
22
|
-
{ name:
|
|
23
|
-
{ name:
|
|
24
|
-
{ name:
|
|
25
|
-
{ name:
|
|
26
|
-
{ name:
|
|
27
|
-
{ name:
|
|
22
|
+
{ name: 'lightest', value: '#00b0f0' },
|
|
23
|
+
{ name: 'light', value: '#0099da' },
|
|
24
|
+
{ name: 'default', value: '#0087c1' },
|
|
25
|
+
{ name: 'dark', value: '#006ea6' },
|
|
26
|
+
{ name: 'darker', value: '#00437a' },
|
|
27
|
+
{ name: 'deepBlue', value: '#0c1a32' },
|
|
28
28
|
],
|
|
29
29
|
|
|
30
30
|
// Neutral Colors
|
|
31
31
|
neutral: [
|
|
32
|
-
{ name:
|
|
33
|
-
{ name:
|
|
34
|
-
{ name:
|
|
35
|
-
{ name:
|
|
36
|
-
{ name:
|
|
37
|
-
{ name:
|
|
38
|
-
{ name:
|
|
32
|
+
{ name: 'lightest', value: '#f3f4f6' },
|
|
33
|
+
{ name: 'lighter', value: '#e5e7eb' },
|
|
34
|
+
{ name: 'light', value: '#b5bbc5' },
|
|
35
|
+
{ name: 'default', value: '#9ca3af' },
|
|
36
|
+
{ name: 'dark', value: '#6a767d' },
|
|
37
|
+
{ name: 'darker', value: '#4b5563' },
|
|
38
|
+
{ name: 'black', value: '#000000' },
|
|
39
39
|
],
|
|
40
40
|
|
|
41
|
-
// Slate Colors
|
|
41
|
+
// Slate Colors
|
|
42
42
|
slate: [
|
|
43
|
-
{ name:
|
|
44
|
-
{ name:
|
|
45
|
-
{ name:
|
|
46
|
-
{ name:
|
|
47
|
-
{ name:
|
|
43
|
+
{ name: 'light', value: '#64748B' },
|
|
44
|
+
{ name: 'default', value: '#475569' },
|
|
45
|
+
{ name: 'dark', value: '#334155' },
|
|
46
|
+
{ name: 'darker', value: '#1e293b' }, // Previously 'darkest'
|
|
47
|
+
{ name: 'darkest', value: '#0f172a' }, // New shade added
|
|
48
48
|
],
|
|
49
49
|
|
|
50
50
|
// System Colors
|
|
51
51
|
system: [
|
|
52
|
-
{ name:
|
|
53
|
-
{ name:
|
|
54
|
-
{ name:
|
|
55
|
-
{ name:
|
|
52
|
+
{ name: 'success', value: '#10B981' },
|
|
53
|
+
{ name: 'warning', value: '#FBBF24' },
|
|
54
|
+
{ name: 'error', value: '#EF4444' },
|
|
55
|
+
{ name: 'info', value: '#3B82F6' },
|
|
56
56
|
],
|
|
57
57
|
|
|
58
58
|
// State Colors
|
|
59
59
|
state: [
|
|
60
|
-
{ name:
|
|
61
|
-
{ name:
|
|
62
|
-
]
|
|
60
|
+
{ name: 'overlay', value: 'rgb(0 0 0 / 0.06)' },
|
|
61
|
+
{ name: 'disabled', value: 'rgb(0 0 0 / 0.12)' },
|
|
62
|
+
],
|
|
63
63
|
};
|
|
64
64
|
|
|
65
65
|
export const TYPOGRAPHY = {
|
|
66
66
|
scale: [
|
|
67
|
-
{ name:
|
|
68
|
-
{ name:
|
|
69
|
-
{ name:
|
|
70
|
-
{ name:
|
|
71
|
-
{ name:
|
|
72
|
-
{ name:
|
|
73
|
-
{ name:
|
|
74
|
-
]
|
|
67
|
+
{ name: 'h1', size: '22pt', weight: '400' },
|
|
68
|
+
{ name: 'h2', size: '17pt', weight: '500' },
|
|
69
|
+
{ name: 'h3', size: '13pt', weight: '600' },
|
|
70
|
+
{ name: 'h4', size: '13pt', weight: '500' },
|
|
71
|
+
{ name: 'body', size: '13pt', weight: '400' },
|
|
72
|
+
{ name: 'button', size: '13pt', weight: '400' },
|
|
73
|
+
{ name: 'caption', size: '10pt', weight: '400' },
|
|
74
|
+
],
|
|
75
75
|
};
|
|
76
76
|
|
|
77
77
|
export const FONTS = {
|
|
78
78
|
types: [
|
|
79
|
-
{ name:
|
|
80
|
-
{ name:
|
|
81
|
-
{ name:
|
|
82
|
-
{ name:
|
|
83
|
-
{ name:
|
|
84
|
-
{ name:
|
|
85
|
-
{ name:
|
|
86
|
-
{ name:
|
|
87
|
-
]
|
|
79
|
+
{ name: 'sans', value: 'font-textregular' },
|
|
80
|
+
{ name: 'text-regular', value: 'font-textregular' },
|
|
81
|
+
{ name: 'text-bold', value: 'font-textbold' },
|
|
82
|
+
{ name: 'head-bold', value: 'font-headbold' },
|
|
83
|
+
{ name: 'head-regular', value: 'font-headregular' },
|
|
84
|
+
{ name: 'head-light', value: 'font-headlight' },
|
|
85
|
+
{ name: 'text-light', value: 'font-textlight' },
|
|
86
|
+
{ name: 'mono', value: 'font-novamono' },
|
|
87
|
+
],
|
|
88
88
|
};
|
|
89
89
|
|
|
90
|
-
export const SHADOWS = {
|
|
90
|
+
export const SHADOWS = {
|
|
91
91
|
types: [
|
|
92
|
-
{ name:
|
|
93
|
-
{ name:
|
|
94
|
-
{ name:
|
|
95
|
-
{ name:
|
|
96
|
-
{ name:
|
|
97
|
-
{ name:
|
|
98
|
-
]
|
|
99
|
-
};
|
|
92
|
+
{ name: 'xs', value: '0px 2px 4px rgba(0, 0, 0, 0.08)' },
|
|
93
|
+
{ name: 'sm', value: '0px 4px 8px rgba(0, 0, 0, 0.125)' },
|
|
94
|
+
{ name: 'md', value: '0px 8px 16px rgba(0, 0, 0, 0.125)' },
|
|
95
|
+
{ name: 'lg', value: '0px 16px 32px rgba(0, 0, 0, 0.125)' },
|
|
96
|
+
{ name: 'xl', value: '0px 32px 64px rgba(0, 0, 0, 0.125)' },
|
|
97
|
+
{ name: '2xl', value: '0px 64px 128px rgba(0, 0, 0, 0.125)' },
|
|
98
|
+
],
|
|
99
|
+
};
|
package/src/env.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/// <reference path="../.astro/types.d.ts" />
|
|
2
2
|
/// <reference types="astro/client" />
|
|
3
3
|
declare module '*.vue' {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
import type { DefineComponent } from 'vue';
|
|
5
|
+
const component: DefineComponent<{}, {}, any>;
|
|
6
|
+
export default component;
|
|
7
|
+
}
|
package/src/layouts/Layout.astro
CHANGED
|
@@ -1,24 +1,20 @@
|
|
|
1
1
|
---
|
|
2
|
-
import HeadCommon from
|
|
3
|
-
import FooterCommon from
|
|
4
|
-
import HeadSEO from
|
|
5
|
-
import * as CONFIG from
|
|
6
|
-
import
|
|
7
|
-
import Copyright from
|
|
2
|
+
import HeadCommon from './partials/HeadCommon.astro';
|
|
3
|
+
import FooterCommon from './partials/FooterCommon.astro';
|
|
4
|
+
import HeadSEO from '../layouts/partials/HeadSEO.astro';
|
|
5
|
+
import * as CONFIG from '../config';
|
|
6
|
+
import '../styles/main.css';
|
|
7
|
+
import Copyright from '../components/Copyright.astro';
|
|
8
8
|
const { content = {} } = Astro.props;
|
|
9
9
|
const canonicalURL = new URL(Astro.url.pathname, Astro.site).toString();
|
|
10
10
|
---
|
|
11
11
|
|
|
12
|
-
<html dir={content.dir ??
|
|
12
|
+
<html dir={content.dir ?? 'ltr'} lang={content.lang ?? 'en-us'} class="initial">
|
|
13
13
|
<head>
|
|
14
14
|
<HeadCommon />
|
|
15
15
|
<HeadSEO {content} canonicalURL={canonicalURL} />
|
|
16
16
|
<title>
|
|
17
|
-
{
|
|
18
|
-
content.title
|
|
19
|
-
? `${content.title} 🚀 ${CONFIG.SITE.title}`
|
|
20
|
-
: CONFIG.SITE.title
|
|
21
|
-
}
|
|
17
|
+
{content.title ? `${content.title} 🚀 ${CONFIG.SITE.title}` : CONFIG.SITE.title}
|
|
22
18
|
</title>
|
|
23
19
|
</head>
|
|
24
20
|
|
|
@@ -34,13 +30,9 @@ const canonicalURL = new URL(Astro.url.pathname, Astro.site).toString();
|
|
|
34
30
|
target="_blank"
|
|
35
31
|
rel="follow noopener"
|
|
36
32
|
class="flex my-auto items-center mx-auto"
|
|
37
|
-
title={`Proudly made in Poland by ${
|
|
38
|
-
import.meta.env.COPYRIGHT_DOMAIN
|
|
39
|
-
}`}
|
|
33
|
+
title={`Proudly made in Poland by ${import.meta.env.COPYRIGHT_DOMAIN}`}
|
|
40
34
|
>
|
|
41
|
-
<div class="text-xxs md:text-xs mr-1 mt-0.5 whitespace-nowrap">
|
|
42
|
-
createdy by
|
|
43
|
-
</div>
|
|
35
|
+
<div class="text-xxs md:text-xs mr-1 mt-0.5 whitespace-nowrap">createdy by</div>
|
|
44
36
|
<img
|
|
45
37
|
class="h-4 w-min md:h-5"
|
|
46
38
|
src="spoko.space.svg"
|
|
@@ -55,4 +47,3 @@ const canonicalURL = new URL(Astro.url.pathname, Astro.site).toString();
|
|
|
55
47
|
</footer>
|
|
56
48
|
</body>
|
|
57
49
|
</html>
|
|
58
|
-
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
---
|
|
2
|
-
import HeadCommon from
|
|
3
|
-
import HeadSEO from
|
|
4
|
-
import Header from
|
|
5
|
-
import PageContent from
|
|
6
|
-
import LeftSidebar from
|
|
7
|
-
import * as CONFIG from
|
|
8
|
-
import
|
|
9
|
-
import Copyright from
|
|
2
|
+
import HeadCommon from './partials/HeadCommon.astro';
|
|
3
|
+
import HeadSEO from '../layouts/partials/HeadSEO.astro';
|
|
4
|
+
import Header from '../components/Header/Header.astro';
|
|
5
|
+
import PageContent from '../components/PageContent.astro';
|
|
6
|
+
import LeftSidebar from '../components/LeftSidebar.astro';
|
|
7
|
+
import * as CONFIG from '../config';
|
|
8
|
+
import '../styles/main.css';
|
|
9
|
+
import Copyright from '../components/Copyright.astro';
|
|
10
10
|
const { content = {} } = Astro.props;
|
|
11
11
|
const currentPage = Astro.url.pathname;
|
|
12
12
|
const canonicalURL = new URL(Astro.url.pathname, Astro.site).toString();
|
|
@@ -14,22 +14,18 @@ const canonicalURL = new URL(Astro.url.pathname, Astro.site).toString();
|
|
|
14
14
|
|
|
15
15
|
<script>
|
|
16
16
|
// Swiper Element
|
|
17
|
-
import { register } from
|
|
18
|
-
document.addEventListener(
|
|
17
|
+
import { register } from 'swiper/element/bundle';
|
|
18
|
+
document.addEventListener('astro:page-load', () => {
|
|
19
19
|
register();
|
|
20
20
|
});
|
|
21
21
|
</script>
|
|
22
22
|
|
|
23
|
-
<html dir={content.dir ??
|
|
23
|
+
<html dir={content.dir ?? 'ltr'} lang={content.lang ?? 'en-us'} class="initial">
|
|
24
24
|
<head>
|
|
25
25
|
<HeadCommon />
|
|
26
26
|
<HeadSEO content={content} canonicalURL={canonicalURL} />
|
|
27
27
|
<title>
|
|
28
|
-
{
|
|
29
|
-
content.title
|
|
30
|
-
? `${content.title} 🚀 ${CONFIG.SITE.title}`
|
|
31
|
-
: CONFIG.SITE.title
|
|
32
|
-
}
|
|
28
|
+
{content.title ? `${content.title} 🚀 ${CONFIG.SITE.title}` : CONFIG.SITE.title}
|
|
33
29
|
</title>
|
|
34
30
|
</head>
|
|
35
31
|
|
|
@@ -60,9 +56,7 @@ const canonicalURL = new URL(Astro.url.pathname, Astro.site).toString();
|
|
|
60
56
|
class="flex my-auto items-center mx-auto"
|
|
61
57
|
title={`Proudly made in Poland by spoko.space`}
|
|
62
58
|
>
|
|
63
|
-
<div class="text-xxs md:text-xs mr-1 mt-0.5 whitespace-nowrap">
|
|
64
|
-
createdy by
|
|
65
|
-
</div>
|
|
59
|
+
<div class="text-xxs md:text-xs mr-1 mt-0.5 whitespace-nowrap">createdy by</div>
|
|
66
60
|
<img
|
|
67
61
|
class="h-4 md:h-5 w-min"
|
|
68
62
|
src="/spoko.space.svg"
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
import { ViewTransitions } from
|
|
2
|
+
import { ViewTransitions } from 'astro:transitions';
|
|
3
3
|
import { pwaInfo } from 'virtual:pwa-info';
|
|
4
4
|
---
|
|
5
5
|
|
|
@@ -22,13 +22,13 @@ import { pwaInfo } from 'virtual:pwa-info';
|
|
|
22
22
|
|
|
23
23
|
<!-- This is intentionally inlined to avoid FOUC -->
|
|
24
24
|
<script is:inline>
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
25
|
+
// const root = document.documentElement;
|
|
26
|
+
// const theme = localStorage.getItem('theme');
|
|
27
|
+
// if (theme === 'dark' || (!theme && window.matchMedia('(prefers-color-scheme: dark)').matches)) {
|
|
28
|
+
// root.classList.add('dark');
|
|
29
|
+
// } else {
|
|
30
|
+
// root.classList.remove('dark');
|
|
31
|
+
// }
|
|
32
32
|
</script>
|
|
33
33
|
|
|
34
34
|
<!-- Global site tag (gtag.js) - Google Analytics -->
|
|
@@ -41,4 +41,4 @@ import { pwaInfo } from 'virtual:pwa-info';
|
|
|
41
41
|
</script> -->
|
|
42
42
|
|
|
43
43
|
<ViewTransitions />
|
|
44
|
-
{
|
|
44
|
+
{pwaInfo && <Fragment set:html={pwaInfo.webManifest.linkTag} />}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
import { SITE, OPEN_GRAPH } from '../../config';
|
|
3
3
|
export interface Props {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
content: any;
|
|
5
|
+
// site: any;
|
|
6
|
+
canonicalURL: URL | string;
|
|
7
7
|
}
|
|
8
8
|
const { content = {}, canonicalURL } = Astro.props;
|
|
9
9
|
const formattedContentTitle = content.title ? `${content.title} 🚀 ${SITE.title}` : SITE.title;
|
|
@@ -22,14 +22,21 @@ const imageAlt = content?.image?.alt ?? OPEN_GRAPH.image.alt;
|
|
|
22
22
|
<meta property="og:locale" content={content.ogLocale ?? SITE.defaultLanguage} />
|
|
23
23
|
<!-- <meta property="og:image" content={canonicalImageSrc} /> -->
|
|
24
24
|
<meta property="og:image:alt" content={imageAlt} />
|
|
25
|
-
<meta
|
|
25
|
+
<meta
|
|
26
|
+
name="description"
|
|
27
|
+
property="og:description"
|
|
28
|
+
content={content.description ? content.description : SITE.description}
|
|
29
|
+
/>
|
|
26
30
|
<meta property="og:site_name" content={SITE.title} />
|
|
27
31
|
|
|
28
32
|
<!-- Twitter Tags -->
|
|
29
33
|
<meta name="twitter:card" content="summary_large_image" />
|
|
30
34
|
<meta name="twitter:site" content={OPEN_GRAPH.twitter} />
|
|
31
35
|
<meta name="twitter:title" content={formattedContentTitle} />
|
|
32
|
-
<meta
|
|
36
|
+
<meta
|
|
37
|
+
name="twitter:description"
|
|
38
|
+
content={content.description ? content.description : SITE.description}
|
|
39
|
+
/>
|
|
33
40
|
<!-- <meta name="twitter:image" content={canonicalImageSrc} /> -->
|
|
34
41
|
<meta name="twitter:image:alt" content={imageAlt} />
|
|
35
42
|
|