spoko-design-system 0.2.82 → 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 (159) hide show
  1. package/.astro/content-assets.mjs +1 -0
  2. package/.astro/content-modules.mjs +1 -0
  3. package/.astro/data-store.json +1 -0
  4. package/.astro/settings.json +4 -4
  5. package/.github/dependabot.yml +11 -11
  6. package/.github/todo.yml +3 -3
  7. package/.github/workflows/deploy.yml +39 -39
  8. package/.stackblitzrc +5 -5
  9. package/.vscode/extensions.json +5 -5
  10. package/.vscode/launch.json +11 -11
  11. package/.vscode/settings.json +5 -5
  12. package/LICENSE +21 -21
  13. package/README.md +113 -113
  14. package/astro-i18next.config.mjs +17 -17
  15. package/astro-i18next.config.ts +10 -10
  16. package/astro.config.mjs +147 -147
  17. package/dev-dist/sw.js +91 -91
  18. package/dev-dist/workbox-c676b6d3.js +3391 -3391
  19. package/index.ts +62 -65
  20. package/package.json +51 -50
  21. package/public/fonts/lg.svg +53 -53
  22. package/public/fonts/vwhead-bold-demo.html +549 -549
  23. package/public/fonts/vwhead-regular-demo.html +549 -549
  24. package/public/fonts/vwtext-bold-demo.html +549 -549
  25. package/public/fonts/vwtext-regular-demo.html +549 -549
  26. package/public/github.svg +3 -3
  27. package/public/grid_dot.svg +4 -4
  28. package/public/linkedin.svg +44 -44
  29. package/public/locales/en/translation.json +8 -8
  30. package/public/locales/pl/translation.json +8 -8
  31. package/public/make-scrollable-code-focusable.js +3 -3
  32. package/public/pagefind.yml +3 -3
  33. package/public/polo.blue.svg +29 -29
  34. package/public/spoko.space.svg +71 -71
  35. package/public/twitter.svg +46 -46
  36. package/renovate.json +6 -6
  37. package/sandbox.config.json +11 -11
  38. package/src/MyComponent.astro +8 -8
  39. package/src/components/Badge.vue +19 -19
  40. package/src/components/Badges.vue +21 -21
  41. package/src/components/Breadcrumbs.vue +107 -107
  42. package/src/components/Button.vue +63 -55
  43. package/src/components/ButtonCopy.vue +36 -36
  44. package/src/components/Card.astro +27 -27
  45. package/src/components/Carousel.astro +26 -26
  46. package/src/components/Category/CategoriesCarousel.astro +101 -101
  47. package/src/components/Category/CategoryDetails.astro +106 -82
  48. package/src/components/Category/CategoryLink.vue +23 -23
  49. package/src/components/Category/CategorySidebarToggler.vue +9 -9
  50. package/src/components/Category/CategoryTile.astro +49 -49
  51. package/src/components/Category/SubCategoryLink.vue +29 -29
  52. package/src/components/CategoryLink.astro +18 -18
  53. package/src/components/Copyright.astro +12 -12
  54. package/src/components/Date.astro +7 -7
  55. package/src/components/Faq.astro +33 -33
  56. package/src/components/FaqItem.astro +96 -96
  57. package/src/components/FeaturesList.vue +41 -41
  58. package/src/components/FuckRussia.vue +62 -62
  59. package/src/components/HandDrive.astro +29 -29
  60. package/src/components/Header/Header.astro +210 -210
  61. package/src/components/Header/SkipToContent.astro +1 -1
  62. package/src/components/Headline.vue +48 -48
  63. package/src/components/Image.astro +30 -30
  64. package/src/components/Jumbatron.vue +40 -40
  65. package/src/components/LeftSidebar.astro +53 -53
  66. package/src/components/MainColors.vue +23 -23
  67. package/src/components/MainInput.vue +15 -15
  68. package/src/components/Modal.astro +27 -27
  69. package/src/components/PageContent.astro +5 -5
  70. package/src/components/PartNumber.vue +27 -27
  71. package/src/components/PostHeader.astro +103 -103
  72. package/src/components/PrCode.vue +141 -141
  73. package/src/components/Product/ProductButton.vue +18 -18
  74. package/src/components/Product/ProductCarousel.astro +35 -35
  75. package/src/components/Product/ProductCodes.vue +174 -174
  76. package/src/components/Product/ProductEngineType.vue +42 -42
  77. package/src/components/Product/ProductImage.astro +40 -40
  78. package/src/components/Product/ProductLink.astro +101 -101
  79. package/src/components/Product/ProductLink.vue +59 -59
  80. package/src/components/Product/ProductLinkInfo.astro +37 -37
  81. package/src/components/Product/ProductNumber.astro +61 -61
  82. package/src/components/ProductCarousel.astro +38 -38
  83. package/src/components/ProductCodes.vue +39 -39
  84. package/src/components/ProductDetailName.vue +52 -52
  85. package/src/components/ProductDetailsList.vue +65 -65
  86. package/src/components/ProductTile.astro +48 -48
  87. package/src/components/Quote.vue +23 -23
  88. package/src/components/ReloadPrompt.astro +50 -50
  89. package/src/components/SlimBanner.vue +72 -72
  90. package/src/components/Table.vue +32 -32
  91. package/src/components/TableOfContents.astro +15 -15
  92. package/src/components/Translations.vue +23 -23
  93. package/src/components/flags/FlagPL.vue +3 -3
  94. package/src/components/flags/FlagUA.vue +2 -2
  95. package/src/components/layout/Container.astro +7 -7
  96. package/src/components/layout/Header.astro +80 -80
  97. package/src/config.ts +56 -56
  98. package/src/design.config.ts +81 -81
  99. package/src/env.d.ts +7 -2
  100. package/src/layouts/Layout.astro +60 -60
  101. package/src/layouts/MainLayout.astro +81 -81
  102. package/src/layouts/partials/FooterCommon.astro +4 -4
  103. package/src/layouts/partials/HeadCommon.astro +44 -44
  104. package/src/layouts/partials/HeadSEO.astro +41 -41
  105. package/src/pages/components/badges.mdx +57 -57
  106. package/src/pages/components/breadcrumbs.mdx +139 -139
  107. package/src/pages/components/buttons.mdx +253 -236
  108. package/src/pages/components/card.mdx +294 -294
  109. package/src/pages/components/carousel.mdx +62 -62
  110. package/src/pages/components/copyright.mdx +42 -42
  111. package/src/pages/components/details-list.mdx +115 -115
  112. package/src/pages/components/features-list.mdx +37 -37
  113. package/src/pages/components/flags.mdx +49 -49
  114. package/src/pages/components/fuck-russia.mdx +39 -39
  115. package/src/pages/components/hand-drive.mdx +38 -38
  116. package/src/pages/components/headline.mdx +152 -152
  117. package/src/pages/components/icons.astro +48 -48
  118. package/src/pages/components/image.mdx +513 -513
  119. package/src/pages/components/input.mdx +45 -45
  120. package/src/pages/components/jumbatron.mdx +95 -95
  121. package/src/pages/components/modal.mdx +64 -64
  122. package/src/pages/components/post-header.mdx +60 -60
  123. package/src/pages/components/pr-code.mdx +65 -65
  124. package/src/pages/components/product-number.mdx +58 -58
  125. package/src/pages/components/product-tile.mdx +51 -51
  126. package/src/pages/components/quote.mdx +33 -33
  127. package/src/pages/components/slimbanner.mdx +35 -35
  128. package/src/pages/components/table.mdx +108 -108
  129. package/src/pages/core/colors.mdx +10 -10
  130. package/src/pages/core/grid.mdx +89 -89
  131. package/src/pages/core/introduction.mdx +77 -77
  132. package/src/pages/core/shadows.astro +20 -20
  133. package/src/pages/core/typography.astro +47 -47
  134. package/src/pages/index.astro +126 -126
  135. package/src/pages/patterns/introduction.mdx +60 -60
  136. package/src/pwa.ts +12 -12
  137. package/src/styles/_variables.scss +70 -70
  138. package/src/styles/base/base.css +184 -184
  139. package/src/styles/base/grid.css +92 -92
  140. package/src/styles/base/typography.css +70 -70
  141. package/src/styles/content.css +73 -73
  142. package/src/styles/main.css +7 -7
  143. package/src/types/Product.ts +31 -31
  144. package/src/types/astro.d.ts +3 -3
  145. package/src/utils/product/getPriceFormatted.ts +15 -15
  146. package/src/utils/product/getProductChecklist.ts +17 -17
  147. package/src/utils/product/useFormatProductNumber.ts +41 -41
  148. package/src/utils/seo/getShorterDescription.ts +14 -14
  149. package/src/utils/text/formatDate.ts +5 -5
  150. package/src/utils/text/formatLocaleNumber.ts +6 -6
  151. package/src/utils/text/formatPad.ts +12 -12
  152. package/src/utils/text/getNumberFormatted.ts +33 -33
  153. package/src/utils/text/getTranslatedLink.ts +5 -5
  154. package/src/utils/text.ts +19 -28
  155. package/tailwind.config.cjs +8 -8
  156. package/tsconfig.json +28 -28
  157. package/uno.config.ts +250 -256
  158. package/src/components/Category/CategoriesSidebar.astro +0 -187
  159. package/src/components/Category/CategorySection.astro +0 -70
@@ -1,53 +1,53 @@
1
- ---
2
- import { SIDEBAR } from "../config";
3
- import { Astronav, MenuItems } from "astro-navbar";
4
- const { currentPage } = Astro.props;
5
- const currentPageMatch = currentPage.slice(1);
6
-
7
- const isCurrentPage = (item) => {
8
- if (item.link) {
9
- return item.link.includes(currentPageMatch);
10
- }
11
- return false;
12
- };
13
-
14
- const getLinkClasses = (link) => {
15
- const baseClasses =
16
- "block py-1.5 px-6 my-1 transition-colors border-l hover:border-slate-400 text-slate-500 hover:text-slate-900";
17
-
18
- if (isCurrentPage(link)) {
19
- return baseClasses + " border-slate-500 text-slate-900";
20
- } else {
21
- return baseClasses;
22
- }
23
- };
24
- ---
25
-
26
- <Astronav>
27
- <MenuItems
28
- class="hidden z-20 bg-blue-gray-100 w-64 h-full overflow-y-auto px-4 border-r pb-3 absolute lg:(relative bg-blue-500 bg-opacity-5 flex)"
29
- >
30
- <ul class="mt-0 mb-auto">
31
- {
32
- SIDEBAR.map((item) =>
33
- item.header ? (
34
- <h2 class="mt-4 font-semibold text-slate-700">{item.text}</h2>
35
- ) : (
36
- <li class={getLinkClasses(item)}>
37
- <a href={item.link}>{item.text}</a>
38
- </li>
39
- ),
40
- )
41
- }
42
- </ul>
43
- </MenuItems>
44
- </Astronav>
45
-
46
- <script is:inline>
47
- window.addEventListener("DOMContentLoaded", (event) => {
48
- var target = document.querySelector('[aria-current="page"]');
49
- if (target && target.offsetTop > window.innerHeight - 100) {
50
- document.querySelector(".nav-groups").scrollTop = target.offsetTop;
51
- }
52
- });
53
- </script>
1
+ ---
2
+ import { SIDEBAR } from "../config";
3
+ import { Astronav, MenuItems } from "astro-navbar";
4
+ const { currentPage } = Astro.props;
5
+ const currentPageMatch = currentPage.slice(1);
6
+
7
+ const isCurrentPage = (item) => {
8
+ if (item.link) {
9
+ return item.link.includes(currentPageMatch);
10
+ }
11
+ return false;
12
+ };
13
+
14
+ const getLinkClasses = (link) => {
15
+ const baseClasses =
16
+ "block py-1.5 px-6 my-1 transition-colors border-l hover:border-slate-400 text-slate-500 hover:text-slate-900";
17
+
18
+ if (isCurrentPage(link)) {
19
+ return baseClasses + " border-slate-500 text-slate-900";
20
+ } else {
21
+ return baseClasses;
22
+ }
23
+ };
24
+ ---
25
+
26
+ <Astronav>
27
+ <MenuItems
28
+ class="hidden z-20 bg-blue-gray-100 w-64 h-full overflow-y-auto px-4 border-r pb-3 absolute lg:(relative bg-blue-500 bg-opacity-5 flex)"
29
+ >
30
+ <ul class="mt-0 mb-auto">
31
+ {
32
+ SIDEBAR.map((item) =>
33
+ item.header ? (
34
+ <h2 class="mt-4 font-semibold text-slate-700">{item.text}</h2>
35
+ ) : (
36
+ <li class={getLinkClasses(item)}>
37
+ <a href={item.link}>{item.text}</a>
38
+ </li>
39
+ ),
40
+ )
41
+ }
42
+ </ul>
43
+ </MenuItems>
44
+ </Astronav>
45
+
46
+ <script is:inline>
47
+ window.addEventListener("DOMContentLoaded", (event) => {
48
+ var target = document.querySelector('[aria-current="page"]');
49
+ if (target && target.offsetTop > window.innerHeight - 100) {
50
+ document.querySelector(".nav-groups").scrollTop = target.offsetTop;
51
+ }
52
+ });
53
+ </script>
@@ -1,23 +1,23 @@
1
- <script setup lang="ts">
2
- import { COLORS } from "../design.config";
3
-
4
- const colorNames = Object.keys(COLORS);
5
- </script>
6
-
7
- <template>
8
- <div class="flex flex-col space-y-12">
9
- <div v-for="name in colorNames" :key="name">
10
- <h3 class="capitalize">{{ name }}</h3>
11
- <div class="grid grid-cols-3 md:grid-cols-9">
12
- <div v-for="color in COLORS[name]" :key="color" class="mb-6">
13
- <div class="h-12 transition-all" :style="`background: ${color.value}`"></div>
14
- <div class="text-sm flex flex-col text-center font-mono text-slate-500">
15
- <span>{{ color.name }}</span>
16
- <span class="uppercase text-xs">{{ color.value }}</span>
17
- </div>
18
- </div>
19
- </div>
20
- </div>
21
- </div>
22
- </template>
23
-
1
+ <script setup lang="ts">
2
+ import { COLORS } from "../design.config";
3
+
4
+ const colorNames = Object.keys(COLORS);
5
+ </script>
6
+
7
+ <template>
8
+ <div class="flex flex-col space-y-12">
9
+ <div v-for="name in colorNames" :key="name">
10
+ <h3 class="capitalize">{{ name }}</h3>
11
+ <div class="grid grid-cols-3 md:grid-cols-9">
12
+ <div v-for="color in COLORS[name]" :key="color" class="mb-6">
13
+ <div class="h-12 transition-all" :style="`background: ${color.value}`"></div>
14
+ <div class="text-sm flex flex-col text-center font-mono text-slate-500">
15
+ <span>{{ color.name }}</span>
16
+ <span class="uppercase text-xs">{{ color.value }}</span>
17
+ </div>
18
+ </div>
19
+ </div>
20
+ </div>
21
+ </div>
22
+ </template>
23
+
@@ -1,15 +1,15 @@
1
- <script setup lang="ts">
2
- const props = defineProps<{
3
- label: string;
4
- }>();
5
- </script>
6
-
7
- <template>
8
- <label class="group text-left w-full max-w-xs flex flex-col">
9
- <span class="group-hover:text-blue-600 ml-2 text-slate-600 text-sm group-focus-within:text-blue-600">{{ label
10
- }}</span>
11
- <input
12
- class="group-hover:border-blue-500 border px-4 py-2 transition-colors rounded-md w-full focus:ring focus:outline-none focus:border-blue-600"
13
- type="text" />
14
- </label>
15
- </template>
1
+ <script setup lang="ts">
2
+ const props = defineProps<{
3
+ label: string;
4
+ }>();
5
+ </script>
6
+
7
+ <template>
8
+ <label class="group text-left w-full max-w-xs flex flex-col">
9
+ <span class="group-hover:text-blue-600 ml-2 text-slate-600 text-sm group-focus-within:text-blue-600">{{ label
10
+ }}</span>
11
+ <input
12
+ class="group-hover:border-blue-500 border px-4 py-2 transition-colors rounded-md w-full focus:ring focus:outline-none focus:border-blue-600"
13
+ type="text" />
14
+ </label>
15
+ </template>
@@ -1,27 +1,27 @@
1
- ---
2
- const { id, open } = Astro.props;
3
- import Button from "../components/Button.vue";
4
- ---
5
-
6
- <style >
7
- dialog {
8
- @apply fixed top-0 left-0 right-0 bottom-0;
9
-
10
- &::backdrop {
11
- @apply bg-gray-500/50 fixed;
12
- top: 0px;
13
- right: 0px;
14
- bottom: 0px;
15
- left: 0px;
16
- }
17
- }
18
- </style>
19
-
20
- <Button primary onclick={`window.${id}.showModal()`}>{open}</Button>
21
-
22
- <dialog id={id} class="p-6">
23
- <slot name="main" />
24
- <form method="dialog">
25
- <slot name="close" />
26
- </form>
27
- </dialog>
1
+ ---
2
+ const { id, open } = Astro.props;
3
+ import Button from "../components/Button.vue";
4
+ ---
5
+
6
+ <style >
7
+ dialog {
8
+ @apply fixed top-0 left-0 right-0 bottom-0;
9
+
10
+ &::backdrop {
11
+ @apply bg-gray-500/50 fixed;
12
+ top: 0px;
13
+ right: 0px;
14
+ bottom: 0px;
15
+ left: 0px;
16
+ }
17
+ }
18
+ </style>
19
+
20
+ <Button primary onclick={`window.${id}.showModal()`}>{open}</Button>
21
+
22
+ <dialog id={id} class="p-6">
23
+ <slot name="main" />
24
+ <form method="dialog">
25
+ <slot name="close" />
26
+ </form>
27
+ </dialog>
@@ -1,5 +1,5 @@
1
- <article id="article" class="content">
2
- <section class="main-section">
3
- <slot />
4
- </section>
5
- </article>
1
+ <article id="article" class="content">
2
+ <section class="main-section">
3
+ <slot />
4
+ </section>
5
+ </article>
@@ -1,28 +1,28 @@
1
- <script lang="ts" setup>
2
- import { PropType } from 'vue';
3
-
4
- const props = defineProps({
5
- as: {
6
- type: String as PropType<'div' | 'td' | 'span' | 'h1' | 'h2' | 'h3'>,
7
- default: 'div',
8
- required: true,
9
- },
10
- number: {
11
- type: String,
12
- default: '',
13
- required: true,
14
- },
15
- class: {
16
- type: String,
17
- default: '',
18
- required: false,
19
- },
20
- })
21
-
22
- </script>
23
-
24
- <template>
25
- <component :is="props.as" :class="props.class">
26
- {{ props.number }}
27
- </component>
1
+ <script lang="ts" setup>
2
+ import { PropType } from 'vue';
3
+
4
+ const props = defineProps({
5
+ as: {
6
+ type: String as PropType<'div' | 'td' | 'span' | 'h1' | 'h2' | 'h3'>,
7
+ default: 'div',
8
+ required: true,
9
+ },
10
+ number: {
11
+ type: String,
12
+ default: '',
13
+ required: true,
14
+ },
15
+ class: {
16
+ type: String,
17
+ default: '',
18
+ required: false,
19
+ },
20
+ })
21
+
22
+ </script>
23
+
24
+ <template>
25
+ <component :is="props.as" :class="props.class">
26
+ {{ props.number }}
27
+ </component>
28
28
  </template>
@@ -1,103 +1,103 @@
1
- ---
2
- interface Props {
3
- title: string;
4
- image: string;
5
- date?: string | null;
6
- lang: string;
7
-
8
- author: {
9
- firstName: string;
10
- name: string;
11
- } | null;
12
-
13
- categories: {
14
- name: string;
15
- uri: string;
16
- }[];
17
- }
18
-
19
- const { image, title, categories, date, author } = Astro.props;
20
- import CategoryLink from "./CategoryLink.astro";
21
- import Date from "./Date.astro";
22
- ---
23
-
24
- <header
25
- class="post-header pt-11 w-full justify-center text-white z-2 bg-blue-900"
26
- >
27
- <div class="heading flex flex-wrap">
28
- <div
29
- class="w-full sm:max-w-[640px] md:max-w-3xl lg:max-w-5xl xl:max-w-7xl 2xl:max-w-[1536px] px-4 py-5 flex flex-col flex-wrap"
30
- >
31
- <h1
32
- class="font-textbold text-2xl mb-1 sm:text-3xl md:(text-4xl mb-3) xl:text-6xl mt-1 order-2 line-clamp-3 pb-1"
33
- >
34
- {title}
35
- </h1>
36
- <CategoryLink categories={categories} />
37
- <div class="order-3 flex items-center text-gray-1 00">
38
- {
39
- author && (
40
- <span class="text-sm" title={author.firstName} data-pagefind-ignore>
41
- {author.name}
42
- </span>
43
- )
44
- }
45
- {author && date && <span class="mx-1">-</span>}
46
- {date && <Date date={date} />}
47
- </div>
48
- </div>
49
- </div>
50
- <div class="featured-image">
51
- <img src={image} alt={title} />
52
- </div>
53
- </header>
54
-
55
- <style >
56
- .post-header {
57
- @apply flex relative items-center;
58
- min-height: 19vw;
59
- }
60
-
61
- .heading {
62
- @apply text-white relative flex items-center justify-center mt-auto w-full pt-11 z-[2];
63
- }
64
-
65
- .featured-image {
66
- @apply absolute top-0 bottom-0 left-0 right-0 overflow-hidden w-full bg-gray-100 z-1;
67
-
68
- &:before,
69
- &:after {
70
- @apply content-empty top-0 bottom-0 left-0 right-0 absolute;
71
- }
72
-
73
- &:before {
74
- z-index: 5;
75
- background: linear-gradient(
76
- 0deg,
77
- rgba(0, 0, 0, 0.95),
78
- transparent 30%,
79
- transparent 70%,
80
- rgba(0, 0, 0, 0.95)
81
- );
82
- opacity: 0.5;
83
- }
84
-
85
- &:after {
86
- background: radial-gradient(circle at 50% 85%, #00437a 0, #001e50 100%);
87
- opacity: 0.8;
88
- }
89
-
90
- img {
91
- @apply w-full h-full object-cover block max-w-full;
92
- }
93
- }
94
- </style>
95
-
96
- <style is:global>
97
- .icon {
98
- @apply text-lightBlue-400 mr-2;
99
- width: 1em;
100
- height: 1em;
101
- fill: currentcolor;
102
- }
103
- </style>
1
+ ---
2
+ interface Props {
3
+ title: string;
4
+ image: string;
5
+ date?: string | null;
6
+ lang: string;
7
+
8
+ author: {
9
+ firstName: string;
10
+ name: string;
11
+ } | null;
12
+
13
+ categories: {
14
+ name: string;
15
+ uri: string;
16
+ }[];
17
+ }
18
+
19
+ const { image, title, categories, date, author } = Astro.props;
20
+ import CategoryLink from "./CategoryLink.astro";
21
+ import Date from "./Date.astro";
22
+ ---
23
+
24
+ <header
25
+ class="post-header pt-11 w-full justify-center text-white z-2 bg-blue-900"
26
+ >
27
+ <div class="heading flex flex-wrap">
28
+ <div
29
+ class="w-full sm:max-w-[640px] md:max-w-3xl lg:max-w-5xl xl:max-w-7xl 2xl:max-w-[1536px] px-4 py-5 flex flex-col flex-wrap"
30
+ >
31
+ <h1
32
+ class="font-textbold text-2xl mb-1 sm:text-3xl md:(text-4xl mb-3) xl:text-6xl mt-1 order-2 line-clamp-3 pb-1"
33
+ >
34
+ {title}
35
+ </h1>
36
+ <CategoryLink categories={categories} />
37
+ <div class="order-3 flex items-center text-gray-1 00">
38
+ {
39
+ author && (
40
+ <span class="text-sm" title={author.firstName} data-pagefind-ignore>
41
+ {author.name}
42
+ </span>
43
+ )
44
+ }
45
+ {author && date && <span class="mx-1">-</span>}
46
+ {date && <Date date={date} />}
47
+ </div>
48
+ </div>
49
+ </div>
50
+ <div class="featured-image">
51
+ <img src={image} alt={title} />
52
+ </div>
53
+ </header>
54
+
55
+ <style >
56
+ .post-header {
57
+ @apply flex relative items-center;
58
+ min-height: 19vw;
59
+ }
60
+
61
+ .heading {
62
+ @apply text-white relative flex items-center justify-center mt-auto w-full pt-11 z-[2];
63
+ }
64
+
65
+ .featured-image {
66
+ @apply absolute top-0 bottom-0 left-0 right-0 overflow-hidden w-full bg-gray-100 z-1;
67
+
68
+ &:before,
69
+ &:after {
70
+ @apply content-empty top-0 bottom-0 left-0 right-0 absolute;
71
+ }
72
+
73
+ &:before {
74
+ z-index: 5;
75
+ background: linear-gradient(
76
+ 0deg,
77
+ rgba(0, 0, 0, 0.95),
78
+ transparent 30%,
79
+ transparent 70%,
80
+ rgba(0, 0, 0, 0.95)
81
+ );
82
+ opacity: 0.5;
83
+ }
84
+
85
+ &:after {
86
+ background: radial-gradient(circle at 50% 85%, #00437a 0, #001e50 100%);
87
+ opacity: 0.8;
88
+ }
89
+
90
+ img {
91
+ @apply w-full h-full object-cover block max-w-full;
92
+ }
93
+ }
94
+ </style>
95
+
96
+ <style is:global>
97
+ .icon {
98
+ @apply text-lightBlue-400 mr-2;
99
+ width: 1em;
100
+ height: 1em;
101
+ fill: currentcolor;
102
+ }
103
+ </style>