spoko-design-system 0.9.5 → 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.
- package/.astro/content.d.ts +1 -1
- package/.astro/settings.json +4 -4
- package/.astro/types.d.ts +2 -1
- package/.github/dependabot.yml +11 -11
- package/.github/todo.yml +3 -3
- package/.github/workflows/deploy.yml +39 -39
- package/.github/workflows/release.yml +64 -0
- package/.releaserc.json +93 -0
- package/.stackblitzrc +5 -5
- package/.vscode/extensions.json +5 -5
- package/.vscode/launch.json +11 -11
- package/.vscode/settings.json +5 -5
- package/CHANGELOG.md +12 -0
- package/CONTRIBUTING.md +183 -0
- package/LICENSE +21 -21
- package/README.md +116 -116
- package/astro-i18next.config.mjs +17 -17
- package/astro-i18next.config.ts +10 -10
- package/astro.config.mjs +86 -86
- package/dev-dist/sw.js +91 -91
- package/dev-dist/workbox-c676b6d3.js +3391 -3391
- package/icon.config.ts +310 -310
- package/index.ts +70 -70
- package/package.json +22 -12
- package/public/arrow-bottom.svg +7 -7
- package/public/fonts/lg.svg +53 -53
- package/public/fonts/vwhead-bold-demo.html +549 -549
- package/public/fonts/vwhead-regular-demo.html +549 -549
- package/public/fonts/vwtext-bold-demo.html +549 -549
- package/public/fonts/vwtext-regular-demo.html +549 -549
- package/public/github.svg +3 -3
- package/public/grid_dot.svg +4 -4
- package/public/linkedin.svg +44 -44
- package/public/locales/en/translation.json +12 -12
- package/public/locales/pl/translation.json +12 -12
- package/public/make-scrollable-code-focusable.js +3 -3
- package/public/pagefind.yml +3 -3
- package/public/polo.blue.svg +29 -29
- package/public/spoko.space.svg +71 -71
- package/public/twitter.svg +46 -46
- package/renovate.json +6 -6
- package/sandbox.config.json +11 -11
- package/src/MyComponent.astro +8 -8
- package/src/components/Badge.vue +19 -19
- package/src/components/Badges.vue +21 -21
- package/src/components/Breadcrumbs.vue +94 -94
- package/src/components/Button.vue +101 -101
- package/src/components/ButtonCopy.astro +183 -183
- package/src/components/ButtonCopy.vue +36 -36
- package/src/components/Card.astro +27 -27
- package/src/components/Carousel.astro +26 -26
- package/src/components/Category/CategoriesCarousel.astro +101 -101
- package/src/components/Category/CategoryDetails.astro +169 -169
- package/src/components/Category/CategoryLink.vue +28 -28
- package/src/components/Category/CategorySidebarToggler.vue +9 -9
- package/src/components/Category/CategoryTile.astro +37 -37
- package/src/components/Category/CategoryViewToggler.astro +89 -89
- package/src/components/Category/SubCategoryLink.vue +19 -19
- package/src/components/Copyright.astro +12 -12
- package/src/components/Date.astro +7 -7
- package/src/components/Faq.astro +33 -33
- package/src/components/FaqItem.astro +80 -80
- package/src/components/FeaturesList.vue +37 -37
- package/src/components/FuckRussia.vue +62 -62
- package/src/components/HandDrive.astro +55 -29
- package/src/components/Header/Header.astro +210 -210
- package/src/components/Header/SkipToContent.astro +1 -1
- package/src/components/Headline.vue +87 -87
- package/src/components/Image.astro +30 -30
- package/src/components/LeftSidebar.astro +53 -53
- package/src/components/MainColors.vue +22 -22
- package/src/components/MainInput.vue +15 -15
- package/src/components/Modal.astro +27 -27
- package/src/components/PageContent.astro +5 -5
- package/src/components/PartNumber.vue +27 -27
- package/src/components/Post/PostCategories.astro +41 -41
- package/src/components/Post/PostCategories.vue +30 -30
- package/src/components/PostHeader.astro +103 -103
- package/src/components/PrCode.vue +141 -141
- package/src/components/Product/ProductButton.vue +18 -18
- package/src/components/Product/ProductCarousel.astro +35 -35
- package/src/components/Product/ProductColors.vue +1 -1
- package/src/components/Product/ProductEngineType.vue +42 -42
- package/src/components/Product/ProductImage.astro +40 -40
- package/src/components/Product/ProductLink.astro +101 -101
- package/src/components/Product/ProductLink.vue +59 -59
- package/src/components/Product/ProductLinkInfo.astro +37 -37
- package/src/components/Product/ProductModels.vue +4 -2
- package/src/components/Product/ProductNumber.astro +60 -60
- package/src/components/Product/ProductPositions.vue +1 -1
- package/src/components/ProductCarousel.astro +38 -38
- package/src/components/ProductCodes.vue +39 -39
- package/src/components/ProductDetailName.vue +52 -52
- package/src/components/ProductDetailsList.vue +216 -216
- package/src/components/ProductTile.astro +48 -48
- package/src/components/Quote.vue +23 -23
- package/src/components/ReloadPrompt.astro +50 -50
- package/src/components/SlimBanner.vue +72 -72
- package/src/components/Table.vue +32 -32
- package/src/components/TableOfContents.astro +15 -15
- package/src/components/Translations.vue +23 -23
- package/src/components/flags/FlagPL.vue +3 -3
- package/src/components/flags/FlagUA.vue +2 -2
- package/src/components/{Layout → layout}/CallToAction.astro +52 -52
- package/src/components/{Layout → layout}/Container.astro +7 -7
- package/src/components/{Layout → layout}/Header.astro +80 -80
- package/src/config.ts +56 -56
- package/src/design.config.ts +98 -98
- package/src/env.d.ts +6 -6
- package/src/layouts/Layout.astro +61 -61
- package/src/layouts/MainLayout.astro +81 -81
- package/src/layouts/partials/FooterCommon.astro +4 -4
- package/src/layouts/partials/HeadCommon.astro +44 -44
- package/src/layouts/partials/HeadSEO.astro +41 -41
- package/src/pages/components/badges.mdx +57 -57
- package/src/pages/components/breadcrumbs.mdx +139 -139
- package/src/pages/components/buttons.mdx +360 -360
- package/src/pages/components/card.mdx +294 -294
- package/src/pages/components/carousel.mdx +62 -62
- package/src/pages/components/copyright.mdx +42 -42
- package/src/pages/components/details-list.mdx +115 -115
- package/src/pages/components/features-list.mdx +37 -37
- package/src/pages/components/flags.mdx +49 -49
- package/src/pages/components/fuck-russia.mdx +39 -39
- package/src/pages/components/hand-drive.mdx +105 -38
- package/src/pages/components/headline.mdx +137 -137
- package/src/pages/components/icons.astro +135 -135
- package/src/pages/components/image.mdx +513 -513
- package/src/pages/components/input.mdx +367 -367
- package/src/pages/components/jumbotron.mdx +359 -359
- package/src/pages/components/modal.mdx +64 -64
- package/src/pages/components/post-header.mdx +64 -64
- package/src/pages/components/pr-code.mdx +65 -65
- package/src/pages/components/product-number.mdx +58 -58
- package/src/pages/components/product-tile.mdx +51 -51
- package/src/pages/components/quote.mdx +33 -33
- package/src/pages/components/slimbanner.mdx +35 -35
- package/src/pages/components/table.mdx +108 -108
- package/src/pages/core/colors.mdx +10 -10
- package/src/pages/core/grid.mdx +89 -89
- package/src/pages/core/introduction.mdx +77 -77
- package/src/pages/core/shadows.astro +20 -20
- package/src/pages/core/typography.astro +49 -49
- package/src/pages/index.astro +133 -133
- package/src/pages/patterns/introduction.mdx +60 -60
- package/src/pwa.ts +12 -12
- package/src/styles/_variables.scss +70 -70
- package/src/styles/base/base.css +184 -184
- package/src/styles/base/grid.css +92 -92
- package/src/styles/base/typography.css +70 -70
- package/src/styles/content.css +73 -73
- package/src/styles/main.css +7 -7
- package/src/types/Product.ts +31 -31
- package/src/types/astro.d.ts +3 -3
- package/src/utils/product/getPriceFormatted.ts +15 -15
- package/src/utils/product/getProductChecklist.ts +17 -17
- package/src/utils/product/useFormatProductNumber.ts +41 -41
- package/src/utils/seo/getShorterDescription.ts +14 -14
- package/src/utils/text/formatDate.ts +5 -5
- package/src/utils/text/formatLocaleNumber.ts +6 -6
- package/src/utils/text/formatPad.ts +12 -12
- package/src/utils/text/getNumberFormatted.ts +33 -33
- package/src/utils/text/getTranslatedLink.ts +5 -5
- package/src/utils/text.ts +19 -19
- package/tailwind.config.cjs +8 -8
- package/tsconfig.json +28 -28
- package/uno-config/index.ts +268 -268
- package/uno-config/theme/breakpoints.ts +9 -9
- package/uno-config/theme/colors.ts +64 -64
- package/uno-config/theme/dimensions.ts +17 -17
- package/uno-config/theme/effects.ts +14 -14
- package/uno-config/theme/grid.ts +10 -10
- package/uno-config/theme/index.ts +28 -28
- package/uno-config/theme/shortcuts/buttons.ts +53 -53
- package/uno-config/theme/shortcuts/components.ts +123 -123
- package/uno-config/theme/shortcuts/index.ts +20 -20
- package/uno-config/theme/shortcuts/layout.ts +74 -74
- package/uno-config/theme/typography.ts +29 -29
- package/uno.config.ts +2 -2
|
@@ -1,51 +1,51 @@
|
|
|
1
|
-
<script src="./../pwa.ts"></script>
|
|
2
|
-
<div
|
|
3
|
-
id="pwa-toast"
|
|
4
|
-
role="alert"
|
|
5
|
-
aria-labelledby="toast-message"
|
|
6
|
-
>
|
|
7
|
-
<div class="message">
|
|
8
|
-
<span id="toast-message"></span>
|
|
9
|
-
</div>
|
|
10
|
-
<button id="pwa-refresh">
|
|
11
|
-
Reload
|
|
12
|
-
</button>
|
|
13
|
-
<button id="pwa-close">
|
|
14
|
-
Close
|
|
15
|
-
</button>
|
|
16
|
-
</div>
|
|
17
|
-
|
|
18
|
-
<style>
|
|
19
|
-
#pwa-toast {
|
|
20
|
-
visibility: hidden;
|
|
21
|
-
position: fixed;
|
|
22
|
-
right: 0;
|
|
23
|
-
bottom: 0;
|
|
24
|
-
margin: 16px;
|
|
25
|
-
padding: 12px;
|
|
26
|
-
border: 1px solid #8885;
|
|
27
|
-
border-radius: 4px;
|
|
28
|
-
z-index: 1;
|
|
29
|
-
text-align: left;
|
|
30
|
-
box-shadow: 3px 4px 5px 0 #8885;
|
|
31
|
-
}
|
|
32
|
-
#pwa-toast .message {
|
|
33
|
-
margin-bottom: 8px;
|
|
34
|
-
}
|
|
35
|
-
#pwa-toast button {
|
|
36
|
-
border: 1px solid #8885;
|
|
37
|
-
outline: none;
|
|
38
|
-
margin-right: 5px;
|
|
39
|
-
border-radius: 2px;
|
|
40
|
-
padding: 3px 10px;
|
|
41
|
-
}
|
|
42
|
-
#pwa-toast.show {
|
|
43
|
-
visibility: visible;
|
|
44
|
-
}
|
|
45
|
-
button#pwa-refresh {
|
|
46
|
-
display: none;
|
|
47
|
-
}
|
|
48
|
-
#pwa-toast.show.refresh button#pwa-refresh {
|
|
49
|
-
display: inline-block;
|
|
50
|
-
}
|
|
1
|
+
<script src="./../pwa.ts"></script>
|
|
2
|
+
<div
|
|
3
|
+
id="pwa-toast"
|
|
4
|
+
role="alert"
|
|
5
|
+
aria-labelledby="toast-message"
|
|
6
|
+
>
|
|
7
|
+
<div class="message">
|
|
8
|
+
<span id="toast-message"></span>
|
|
9
|
+
</div>
|
|
10
|
+
<button id="pwa-refresh">
|
|
11
|
+
Reload
|
|
12
|
+
</button>
|
|
13
|
+
<button id="pwa-close">
|
|
14
|
+
Close
|
|
15
|
+
</button>
|
|
16
|
+
</div>
|
|
17
|
+
|
|
18
|
+
<style>
|
|
19
|
+
#pwa-toast {
|
|
20
|
+
visibility: hidden;
|
|
21
|
+
position: fixed;
|
|
22
|
+
right: 0;
|
|
23
|
+
bottom: 0;
|
|
24
|
+
margin: 16px;
|
|
25
|
+
padding: 12px;
|
|
26
|
+
border: 1px solid #8885;
|
|
27
|
+
border-radius: 4px;
|
|
28
|
+
z-index: 1;
|
|
29
|
+
text-align: left;
|
|
30
|
+
box-shadow: 3px 4px 5px 0 #8885;
|
|
31
|
+
}
|
|
32
|
+
#pwa-toast .message {
|
|
33
|
+
margin-bottom: 8px;
|
|
34
|
+
}
|
|
35
|
+
#pwa-toast button {
|
|
36
|
+
border: 1px solid #8885;
|
|
37
|
+
outline: none;
|
|
38
|
+
margin-right: 5px;
|
|
39
|
+
border-radius: 2px;
|
|
40
|
+
padding: 3px 10px;
|
|
41
|
+
}
|
|
42
|
+
#pwa-toast.show {
|
|
43
|
+
visibility: visible;
|
|
44
|
+
}
|
|
45
|
+
button#pwa-refresh {
|
|
46
|
+
display: none;
|
|
47
|
+
}
|
|
48
|
+
#pwa-toast.show.refresh button#pwa-refresh {
|
|
49
|
+
display: inline-block;
|
|
50
|
+
}
|
|
51
51
|
</style>
|
|
@@ -1,73 +1,73 @@
|
|
|
1
|
-
<script lang="ts" setup>
|
|
2
|
-
import { ref } from 'vue';
|
|
3
|
-
|
|
4
|
-
const props = defineProps({
|
|
5
|
-
showCloseButton: {
|
|
6
|
-
type: Boolean,
|
|
7
|
-
default: true,
|
|
8
|
-
required: false,
|
|
9
|
-
},
|
|
10
|
-
})
|
|
11
|
-
const isShow = ref(true)
|
|
12
|
-
const toggleVisibility = () => {
|
|
13
|
-
isShow.value = !isShow.value
|
|
14
|
-
}
|
|
15
|
-
</script>
|
|
16
|
-
|
|
17
|
-
<template>
|
|
18
|
-
<div v-if="isShow" data-pagefind-ignore class="slimbanner">
|
|
19
|
-
<span
|
|
20
|
-
class="inline-block text-4xl w-6 h-3.5 min-w-[1.25rem] mr-3 bg-gradient-to-b stops-[#0057b7_50%,50%,#ffd700_100%]" />
|
|
21
|
-
<span class="leading-none "><span
|
|
22
|
-
data-text="We stand with our friends and colleagues in Ukraine. To support Ukraine in their time of need visit " />
|
|
23
|
-
<a href="https://polo.blue/support-ukraine/" target="_blank" rel="noopener" title="Support Ukraine"
|
|
24
|
-
class="underline underline-offset-2 hover:text-blue-wrc">this page</a>.
|
|
25
|
-
</span>
|
|
26
|
-
|
|
27
|
-
<button class="btn-close text-white" v-if="props.showCloseButton" @click="toggleVisibility()"
|
|
28
|
-
aria-label="Toggle">
|
|
29
|
-
<span class="close close-dark"></span>
|
|
30
|
-
</button>
|
|
31
|
-
</div>
|
|
32
|
-
<div v-else data-pagefind-ignore
|
|
33
|
-
class="px-4 sm:px-8 py-3 flex items-center justify-center text-xs sm:text-base leading-none text-white relative bg-black drop-shadow-md z-2 ">
|
|
34
|
-
<div class="tracking-widest leading-none">
|
|
35
|
-
<span data-text="RUSSIA IS A" /> <span class="underline decoration-red-600 decoration-1 underline-offset-3"
|
|
36
|
-
data-text="TERRORIST" /> <span data-text="STATE" />
|
|
37
|
-
</div>
|
|
38
|
-
<button class="btn-close" v-if="props.showCloseButton" @click="toggleVisibility()"
|
|
39
|
-
aria-label="Toggle">
|
|
40
|
-
<span class="close close-light"></span>
|
|
41
|
-
</button>
|
|
42
|
-
</div>
|
|
43
|
-
</template>
|
|
44
|
-
|
|
45
|
-
<style>
|
|
46
|
-
.btn-close {
|
|
47
|
-
@apply ml-3 relative w-5 h-5;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
.close {
|
|
51
|
-
@apply absolute top-0 left-0 opacity-50 transition-opacity duration-200;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
.btn-close:hover .close {
|
|
55
|
-
@apply opacity-100;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
.close:before,
|
|
59
|
-
.close:after {
|
|
60
|
-
position: absolute;
|
|
61
|
-
left: 0.5rem;
|
|
62
|
-
content: ' ';
|
|
63
|
-
height: 1.25rem;
|
|
64
|
-
width: 2px;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
.close:before {
|
|
68
|
-
transform: rotate(45deg);
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
.close:after {
|
|
72
|
-
transform: rotate(-45deg);
|
|
1
|
+
<script lang="ts" setup>
|
|
2
|
+
import { ref } from 'vue';
|
|
3
|
+
|
|
4
|
+
const props = defineProps({
|
|
5
|
+
showCloseButton: {
|
|
6
|
+
type: Boolean,
|
|
7
|
+
default: true,
|
|
8
|
+
required: false,
|
|
9
|
+
},
|
|
10
|
+
})
|
|
11
|
+
const isShow = ref(true)
|
|
12
|
+
const toggleVisibility = () => {
|
|
13
|
+
isShow.value = !isShow.value
|
|
14
|
+
}
|
|
15
|
+
</script>
|
|
16
|
+
|
|
17
|
+
<template>
|
|
18
|
+
<div v-if="isShow" data-pagefind-ignore class="slimbanner">
|
|
19
|
+
<span
|
|
20
|
+
class="inline-block text-4xl w-6 h-3.5 min-w-[1.25rem] mr-3 bg-gradient-to-b stops-[#0057b7_50%,50%,#ffd700_100%]" />
|
|
21
|
+
<span class="leading-none "><span
|
|
22
|
+
data-text="We stand with our friends and colleagues in Ukraine. To support Ukraine in their time of need visit " />
|
|
23
|
+
<a href="https://polo.blue/support-ukraine/" target="_blank" rel="noopener" title="Support Ukraine"
|
|
24
|
+
class="underline underline-offset-2 hover:text-blue-wrc">this page</a>.
|
|
25
|
+
</span>
|
|
26
|
+
|
|
27
|
+
<button class="btn-close text-white" v-if="props.showCloseButton" @click="toggleVisibility()"
|
|
28
|
+
aria-label="Toggle">
|
|
29
|
+
<span class="close close-dark"></span>
|
|
30
|
+
</button>
|
|
31
|
+
</div>
|
|
32
|
+
<div v-else data-pagefind-ignore
|
|
33
|
+
class="px-4 sm:px-8 py-3 flex items-center justify-center text-xs sm:text-base leading-none text-white relative bg-black drop-shadow-md z-2 ">
|
|
34
|
+
<div class="tracking-widest leading-none">
|
|
35
|
+
<span data-text="RUSSIA IS A" /> <span class="underline decoration-red-600 decoration-1 underline-offset-3"
|
|
36
|
+
data-text="TERRORIST" /> <span data-text="STATE" />
|
|
37
|
+
</div>
|
|
38
|
+
<button class="btn-close" v-if="props.showCloseButton" @click="toggleVisibility()"
|
|
39
|
+
aria-label="Toggle">
|
|
40
|
+
<span class="close close-light"></span>
|
|
41
|
+
</button>
|
|
42
|
+
</div>
|
|
43
|
+
</template>
|
|
44
|
+
|
|
45
|
+
<style>
|
|
46
|
+
.btn-close {
|
|
47
|
+
@apply ml-3 relative w-5 h-5;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.close {
|
|
51
|
+
@apply absolute top-0 left-0 opacity-50 transition-opacity duration-200;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.btn-close:hover .close {
|
|
55
|
+
@apply opacity-100;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
.close:before,
|
|
59
|
+
.close:after {
|
|
60
|
+
position: absolute;
|
|
61
|
+
left: 0.5rem;
|
|
62
|
+
content: ' ';
|
|
63
|
+
height: 1.25rem;
|
|
64
|
+
width: 2px;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.close:before {
|
|
68
|
+
transform: rotate(45deg);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
.close:after {
|
|
72
|
+
transform: rotate(-45deg);
|
|
73
73
|
}</style>
|
package/src/components/Table.vue
CHANGED
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
<script setup lang="ts">
|
|
2
|
-
const props = defineProps<{
|
|
3
|
-
data: string;
|
|
4
|
-
}>();
|
|
5
|
-
|
|
6
|
-
const theads = Object.keys(Object.values(props.data)[0])
|
|
7
|
-
|
|
8
|
-
const capitalizeFirstLetter = (text: String) => {
|
|
9
|
-
return text[0].toUpperCase() + text.slice(1)
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
</script>
|
|
13
|
-
|
|
14
|
-
<template>
|
|
15
|
-
<table class="table-auto text-left border bg-white shadow-md">
|
|
16
|
-
<thead class="bg-gray-500 text-white">
|
|
17
|
-
<tr class="border">
|
|
18
|
-
<th class="px-4 py-2 font-semibold" v-for="thead, index in theads" :key="index">
|
|
19
|
-
{{ capitalizeFirstLetter(thead) }}
|
|
20
|
-
</th>
|
|
21
|
-
</tr>
|
|
22
|
-
</thead>
|
|
23
|
-
<tbody>
|
|
24
|
-
<tr class="border" v-for="row in props.data" :key="row">
|
|
25
|
-
<td class="px-4 py-2" v-for="key in Object.keys(row)" :key="key">
|
|
26
|
-
{{ row[key] }}
|
|
27
|
-
</td>
|
|
28
|
-
</tr>
|
|
29
|
-
</tbody>
|
|
30
|
-
</table>
|
|
31
|
-
</template>
|
|
32
|
-
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
const props = defineProps<{
|
|
3
|
+
data: string;
|
|
4
|
+
}>();
|
|
5
|
+
|
|
6
|
+
const theads = Object.keys(Object.values(props.data)[0])
|
|
7
|
+
|
|
8
|
+
const capitalizeFirstLetter = (text: String) => {
|
|
9
|
+
return text[0].toUpperCase() + text.slice(1)
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
</script>
|
|
13
|
+
|
|
14
|
+
<template>
|
|
15
|
+
<table class="table-auto text-left border bg-white shadow-md">
|
|
16
|
+
<thead class="bg-gray-500 text-white">
|
|
17
|
+
<tr class="border">
|
|
18
|
+
<th class="px-4 py-2 font-semibold" v-for="thead, index in theads" :key="index">
|
|
19
|
+
{{ capitalizeFirstLetter(thead) }}
|
|
20
|
+
</th>
|
|
21
|
+
</tr>
|
|
22
|
+
</thead>
|
|
23
|
+
<tbody>
|
|
24
|
+
<tr class="border" v-for="row in props.data" :key="row">
|
|
25
|
+
<td class="px-4 py-2" v-for="key in Object.keys(row)" :key="key">
|
|
26
|
+
{{ row[key] }}
|
|
27
|
+
</td>
|
|
28
|
+
</tr>
|
|
29
|
+
</tbody>
|
|
30
|
+
</table>
|
|
31
|
+
</template>
|
|
32
|
+
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
---
|
|
2
|
-
const { headers } = Astro.props;
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
<ul class="flex flex-col gap-4 mt-24">
|
|
6
|
-
{
|
|
7
|
-
headers.map(({ slug, text }) => {
|
|
8
|
-
return (
|
|
9
|
-
<li class="text-slate-400 hover:text-slate-800 hover:text-slate-900">
|
|
10
|
-
#<a href={`#${slug}`}>{text}</a>
|
|
11
|
-
</li>
|
|
12
|
-
);
|
|
13
|
-
})
|
|
14
|
-
}
|
|
15
|
-
</ul>
|
|
1
|
+
---
|
|
2
|
+
const { headers } = Astro.props;
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
<ul class="flex flex-col gap-4 mt-24">
|
|
6
|
+
{
|
|
7
|
+
headers.map(({ slug, text }) => {
|
|
8
|
+
return (
|
|
9
|
+
<li class="text-slate-400 hover:text-slate-800 hover:text-slate-900">
|
|
10
|
+
#<a href={`#${slug}`}>{text}</a>
|
|
11
|
+
</li>
|
|
12
|
+
);
|
|
13
|
+
})
|
|
14
|
+
}
|
|
15
|
+
</ul>
|
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
|
|
2
|
-
<script setup lang="ts">
|
|
3
|
-
import { PropType } from 'vue';
|
|
4
|
-
|
|
5
|
-
const props = defineProps({
|
|
6
|
-
lang: {
|
|
7
|
-
type: String
|
|
8
|
-
},
|
|
9
|
-
translations: {
|
|
10
|
-
type: Object as PropType<{ uri: string | null, title: string | null, name: string | null } | null>
|
|
11
|
-
}
|
|
12
|
-
});
|
|
13
|
-
</script>
|
|
14
|
-
|
|
15
|
-
<template>
|
|
16
|
-
<div data-pagefind-ignore v-if="props.translations !== null && props.translations.uri">
|
|
17
|
-
<a aria-label="Change language" type="button" :href="translations.uri"
|
|
18
|
-
:title="translations.name ? translations.name : translations.title"
|
|
19
|
-
:class="[lang === 'en' ? 'i-circle-flags:en' : '', lang === 'pl' ? 'i-circle-flags:pl' : '', 'w-5 hover:rotate--3']" />
|
|
20
|
-
</div>
|
|
21
|
-
</template>
|
|
22
|
-
|
|
23
|
-
|
|
1
|
+
|
|
2
|
+
<script setup lang="ts">
|
|
3
|
+
import { PropType } from 'vue';
|
|
4
|
+
|
|
5
|
+
const props = defineProps({
|
|
6
|
+
lang: {
|
|
7
|
+
type: String
|
|
8
|
+
},
|
|
9
|
+
translations: {
|
|
10
|
+
type: Object as PropType<{ uri: string | null, title: string | null, name: string | null } | null>
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
</script>
|
|
14
|
+
|
|
15
|
+
<template>
|
|
16
|
+
<div data-pagefind-ignore v-if="props.translations !== null && props.translations.uri">
|
|
17
|
+
<a aria-label="Change language" type="button" :href="translations.uri"
|
|
18
|
+
:title="translations.name ? translations.name : translations.title"
|
|
19
|
+
:class="[lang === 'en' ? 'i-circle-flags:en' : '', lang === 'pl' ? 'i-circle-flags:pl' : '', 'w-5 hover:rotate--3']" />
|
|
20
|
+
</div>
|
|
21
|
+
</template>
|
|
22
|
+
|
|
23
|
+
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<span
|
|
3
|
-
class="drop-shadow inline-block text-4xl w-6 h-3.5 min-w-[1.25rem] mr-3 bg-gradient-to-b stops-[#fff_50%,50%,#d4213d_100%]" />
|
|
1
|
+
<template>
|
|
2
|
+
<span
|
|
3
|
+
class="drop-shadow inline-block text-4xl w-6 h-3.5 min-w-[1.25rem] mr-3 bg-gradient-to-b stops-[#fff_50%,50%,#d4213d_100%]" />
|
|
4
4
|
</template>
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<span class="flag-ua" />
|
|
1
|
+
<template>
|
|
2
|
+
<span class="flag-ua" />
|
|
3
3
|
</template>
|
|
@@ -1,53 +1,53 @@
|
|
|
1
|
-
---
|
|
2
|
-
import Button from "./../Button.vue"
|
|
3
|
-
|
|
4
|
-
interface Props {
|
|
5
|
-
class?: string;
|
|
6
|
-
title?: string;
|
|
7
|
-
description?: string;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
const { class: additionalClasses, title: propTitle, description: propDescription } = Astro.props;
|
|
11
|
-
|
|
12
|
-
// Sprawdzamy, czy slot 'description' ma jakąkolwiek zawartość
|
|
13
|
-
const hasDescriptionSlotContent = Astro.slots.has('description');
|
|
14
|
-
---
|
|
15
|
-
|
|
16
|
-
<section
|
|
17
|
-
class:list={[
|
|
18
|
-
"full-width border-blue-medium bg-blue-darker/5 border-t-4 md:(border-t-0 px-6 bg-white) my-8",
|
|
19
|
-
additionalClasses,
|
|
20
|
-
]}
|
|
21
|
-
>
|
|
22
|
-
<div class="flex flex-col items-center gap-4 md:(flex-row border-l-4 border-blue-medium bg-blue-darker/5 px-6) py-6">
|
|
23
|
-
<div class="flex-shrink-0 hidden md:block">
|
|
24
|
-
<slot name="icon">
|
|
25
|
-
<span i-ph:sparkle-thin class="mr-1 text-8 md:text-10 text-brand-secondary"></span>
|
|
26
|
-
</slot>
|
|
27
|
-
</div>
|
|
28
|
-
<div class="flex-1 text-center md:text-left">
|
|
29
|
-
<h3 class="text-lg font-semibold text-blue-darker">
|
|
30
|
-
<slot name="title">
|
|
31
|
-
{propTitle || 'Domyślny tytuł akcji'}
|
|
32
|
-
</slot>
|
|
33
|
-
</h3>
|
|
34
|
-
{(propDescription || hasDescriptionSlotContent) && (
|
|
35
|
-
<p class="text-blue-darker mt-1">
|
|
36
|
-
<slot name="description">
|
|
37
|
-
{propDescription || 'Domyślny opis, który zachęca do działania.'}
|
|
38
|
-
</slot>
|
|
39
|
-
</p>
|
|
40
|
-
)}
|
|
41
|
-
</div>
|
|
42
|
-
<slot name="action">
|
|
43
|
-
<Button
|
|
44
|
-
type="button"
|
|
45
|
-
class:list="w-fit place-self-center gap-2"
|
|
46
|
-
tertiary
|
|
47
|
-
rounded
|
|
48
|
-
title="Domyślny przycisk akcji">
|
|
49
|
-
Kliknij mnie!
|
|
50
|
-
</Button>
|
|
51
|
-
</slot>
|
|
52
|
-
</div>
|
|
1
|
+
---
|
|
2
|
+
import Button from "./../Button.vue"
|
|
3
|
+
|
|
4
|
+
interface Props {
|
|
5
|
+
class?: string;
|
|
6
|
+
title?: string;
|
|
7
|
+
description?: string;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
const { class: additionalClasses, title: propTitle, description: propDescription } = Astro.props;
|
|
11
|
+
|
|
12
|
+
// Sprawdzamy, czy slot 'description' ma jakąkolwiek zawartość
|
|
13
|
+
const hasDescriptionSlotContent = Astro.slots.has('description');
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
<section
|
|
17
|
+
class:list={[
|
|
18
|
+
"full-width border-blue-medium bg-blue-darker/5 border-t-4 md:(border-t-0 px-6 bg-white) my-8",
|
|
19
|
+
additionalClasses,
|
|
20
|
+
]}
|
|
21
|
+
>
|
|
22
|
+
<div class="flex flex-col items-center gap-4 md:(flex-row border-l-4 border-blue-medium bg-blue-darker/5 px-6) py-6">
|
|
23
|
+
<div class="flex-shrink-0 hidden md:block">
|
|
24
|
+
<slot name="icon">
|
|
25
|
+
<span i-ph:sparkle-thin class="mr-1 text-8 md:text-10 text-brand-secondary"></span>
|
|
26
|
+
</slot>
|
|
27
|
+
</div>
|
|
28
|
+
<div class="flex-1 text-center md:text-left">
|
|
29
|
+
<h3 class="text-lg font-semibold text-blue-darker">
|
|
30
|
+
<slot name="title">
|
|
31
|
+
{propTitle || 'Domyślny tytuł akcji'}
|
|
32
|
+
</slot>
|
|
33
|
+
</h3>
|
|
34
|
+
{(propDescription || hasDescriptionSlotContent) && (
|
|
35
|
+
<p class="text-blue-darker mt-1">
|
|
36
|
+
<slot name="description">
|
|
37
|
+
{propDescription || 'Domyślny opis, który zachęca do działania.'}
|
|
38
|
+
</slot>
|
|
39
|
+
</p>
|
|
40
|
+
)}
|
|
41
|
+
</div>
|
|
42
|
+
<slot name="action">
|
|
43
|
+
<Button
|
|
44
|
+
type="button"
|
|
45
|
+
class:list="w-fit place-self-center gap-2"
|
|
46
|
+
tertiary
|
|
47
|
+
rounded
|
|
48
|
+
title="Domyślny przycisk akcji">
|
|
49
|
+
Kliknij mnie!
|
|
50
|
+
</Button>
|
|
51
|
+
</slot>
|
|
52
|
+
</div>
|
|
53
53
|
</section>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
---
|
|
2
|
-
const { class: className, isFullWidth } = Astro.props;
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
<div class:list={[`${isFullWidth ? 'max-w-full' : 'max-w-screen-xl'} mx-auto px-5 py-4`, className]}>
|
|
6
|
-
<slot />
|
|
7
|
-
</div>
|
|
1
|
+
---
|
|
2
|
+
const { class: className, isFullWidth } = Astro.props;
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
<div class:list={[`${isFullWidth ? 'max-w-full' : 'max-w-screen-xl'} mx-auto px-5 py-4`, className]}>
|
|
6
|
+
<slot />
|
|
7
|
+
</div>
|