spoko-design-system 0.2.80 → 0.2.81

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 (155) hide show
  1. package/.github/dependabot.yml +11 -11
  2. package/.github/todo.yml +3 -3
  3. package/.github/workflows/deploy.yml +39 -39
  4. package/.stackblitzrc +5 -5
  5. package/.vscode/extensions.json +5 -5
  6. package/.vscode/launch.json +11 -11
  7. package/.vscode/settings.json +5 -5
  8. package/LICENSE +21 -21
  9. package/README.md +113 -113
  10. package/astro-i18next.config.mjs +17 -17
  11. package/astro-i18next.config.ts +10 -10
  12. package/astro.config.mjs +147 -147
  13. package/dev-dist/sw.js +91 -91
  14. package/dev-dist/workbox-c676b6d3.js +3391 -3391
  15. package/index.ts +65 -65
  16. package/package.json +3 -3
  17. package/public/fonts/lg.svg +53 -53
  18. package/public/fonts/vwhead-bold-demo.html +549 -549
  19. package/public/fonts/vwhead-regular-demo.html +549 -549
  20. package/public/fonts/vwtext-bold-demo.html +549 -549
  21. package/public/fonts/vwtext-regular-demo.html +549 -549
  22. package/public/github.svg +3 -3
  23. package/public/grid_dot.svg +4 -4
  24. package/public/linkedin.svg +44 -44
  25. package/public/locales/en/translation.json +8 -8
  26. package/public/locales/pl/translation.json +8 -8
  27. package/public/make-scrollable-code-focusable.js +3 -3
  28. package/public/pagefind.yml +3 -3
  29. package/public/polo.blue.svg +29 -29
  30. package/public/spoko.space.svg +71 -71
  31. package/public/twitter.svg +46 -46
  32. package/renovate.json +6 -6
  33. package/sandbox.config.json +11 -11
  34. package/src/MyComponent.astro +8 -8
  35. package/src/components/Badge.vue +19 -19
  36. package/src/components/Badges.vue +21 -21
  37. package/src/components/Breadcrumbs.vue +107 -107
  38. package/src/components/Button.vue +55 -55
  39. package/src/components/ButtonCopy.vue +36 -36
  40. package/src/components/Card.astro +27 -27
  41. package/src/components/Carousel.astro +26 -26
  42. package/src/components/Category/CategoriesCarousel.astro +101 -101
  43. package/src/components/Category/CategoriesSidebar.astro +186 -186
  44. package/src/components/Category/CategoryDetails.astro +82 -82
  45. package/src/components/Category/CategoryLink.vue +23 -23
  46. package/src/components/Category/CategorySection.astro +69 -69
  47. package/src/components/Category/CategorySidebarToggler.vue +9 -9
  48. package/src/components/Category/CategoryTile.astro +49 -49
  49. package/src/components/Category/SubCategoryLink.vue +29 -29
  50. package/src/components/CategoryLink.astro +18 -18
  51. package/src/components/Copyright.astro +12 -12
  52. package/src/components/Date.astro +7 -7
  53. package/src/components/Faq.astro +33 -33
  54. package/src/components/FaqItem.astro +96 -96
  55. package/src/components/FeaturesList.vue +41 -41
  56. package/src/components/FuckRussia.vue +62 -62
  57. package/src/components/HandDrive.astro +29 -29
  58. package/src/components/Header/Header.astro +210 -210
  59. package/src/components/Header/SkipToContent.astro +1 -1
  60. package/src/components/Headline.vue +48 -48
  61. package/src/components/Image.astro +30 -30
  62. package/src/components/Jumbatron.vue +40 -40
  63. package/src/components/LeftSidebar.astro +53 -53
  64. package/src/components/MainColors.vue +23 -23
  65. package/src/components/MainInput.vue +15 -15
  66. package/src/components/Modal.astro +27 -27
  67. package/src/components/PageContent.astro +5 -5
  68. package/src/components/PartNumber.vue +27 -27
  69. package/src/components/PostHeader.astro +103 -103
  70. package/src/components/PrCode.vue +141 -141
  71. package/src/components/Product/ProductButton.vue +18 -18
  72. package/src/components/Product/ProductCarousel.astro +35 -35
  73. package/src/components/Product/ProductCodes.vue +174 -174
  74. package/src/components/Product/ProductEngineType.vue +42 -42
  75. package/src/components/Product/ProductImage.astro +40 -40
  76. package/src/components/Product/ProductLink.astro +101 -101
  77. package/src/components/Product/ProductLink.vue +59 -59
  78. package/src/components/Product/ProductLinkInfo.astro +37 -37
  79. package/src/components/Product/ProductNumber.astro +61 -61
  80. package/src/components/ProductCarousel.astro +38 -38
  81. package/src/components/ProductCodes.vue +39 -39
  82. package/src/components/ProductDetailName.vue +52 -52
  83. package/src/components/ProductDetailsList.vue +65 -65
  84. package/src/components/ProductTile.astro +48 -48
  85. package/src/components/Quote.vue +23 -23
  86. package/src/components/ReloadPrompt.astro +50 -50
  87. package/src/components/SlimBanner.vue +72 -72
  88. package/src/components/Table.vue +32 -32
  89. package/src/components/TableOfContents.astro +15 -15
  90. package/src/components/Translations.vue +23 -23
  91. package/src/components/flags/FlagPL.vue +3 -3
  92. package/src/components/flags/FlagUA.vue +2 -2
  93. package/src/components/layout/Container.astro +7 -7
  94. package/src/components/layout/Header.astro +80 -80
  95. package/src/config.ts +56 -56
  96. package/src/design.config.ts +81 -81
  97. package/src/env.d.ts +1 -1
  98. package/src/layouts/Layout.astro +60 -60
  99. package/src/layouts/MainLayout.astro +81 -81
  100. package/src/layouts/partials/FooterCommon.astro +4 -4
  101. package/src/layouts/partials/HeadCommon.astro +44 -44
  102. package/src/layouts/partials/HeadSEO.astro +41 -41
  103. package/src/pages/components/badges.mdx +57 -57
  104. package/src/pages/components/breadcrumbs.mdx +139 -139
  105. package/src/pages/components/buttons.mdx +236 -236
  106. package/src/pages/components/card.mdx +294 -294
  107. package/src/pages/components/carousel.mdx +62 -62
  108. package/src/pages/components/copyright.mdx +42 -42
  109. package/src/pages/components/details-list.mdx +115 -115
  110. package/src/pages/components/features-list.mdx +37 -37
  111. package/src/pages/components/flags.mdx +49 -49
  112. package/src/pages/components/fuck-russia.mdx +39 -39
  113. package/src/pages/components/hand-drive.mdx +38 -38
  114. package/src/pages/components/headline.mdx +152 -152
  115. package/src/pages/components/icons.astro +48 -48
  116. package/src/pages/components/image.mdx +513 -513
  117. package/src/pages/components/input.mdx +45 -45
  118. package/src/pages/components/jumbatron.mdx +95 -95
  119. package/src/pages/components/modal.mdx +64 -64
  120. package/src/pages/components/post-header.mdx +60 -60
  121. package/src/pages/components/pr-code.mdx +65 -65
  122. package/src/pages/components/product-number.mdx +58 -58
  123. package/src/pages/components/product-tile.mdx +51 -51
  124. package/src/pages/components/quote.mdx +33 -33
  125. package/src/pages/components/slimbanner.mdx +35 -35
  126. package/src/pages/components/table.mdx +108 -108
  127. package/src/pages/core/colors.mdx +10 -10
  128. package/src/pages/core/grid.mdx +89 -89
  129. package/src/pages/core/introduction.mdx +77 -77
  130. package/src/pages/core/shadows.astro +20 -20
  131. package/src/pages/core/typography.astro +47 -47
  132. package/src/pages/index.astro +126 -126
  133. package/src/pages/patterns/introduction.mdx +60 -60
  134. package/src/pwa.ts +12 -12
  135. package/src/styles/_variables.scss +70 -70
  136. package/src/styles/base/base.css +184 -184
  137. package/src/styles/base/grid.css +92 -92
  138. package/src/styles/base/typography.css +70 -70
  139. package/src/styles/content.css +73 -73
  140. package/src/styles/main.css +7 -7
  141. package/src/types/Product.ts +31 -31
  142. package/src/types/astro.d.ts +3 -3
  143. package/src/utils/product/getPriceFormatted.ts +15 -15
  144. package/src/utils/product/getProductChecklist.ts +17 -17
  145. package/src/utils/product/useFormatProductNumber.ts +41 -41
  146. package/src/utils/seo/getShorterDescription.ts +14 -14
  147. package/src/utils/text/formatDate.ts +5 -5
  148. package/src/utils/text/formatLocaleNumber.ts +6 -6
  149. package/src/utils/text/formatPad.ts +12 -12
  150. package/src/utils/text/getNumberFormatted.ts +33 -33
  151. package/src/utils/text/getTranslatedLink.ts +5 -5
  152. package/src/utils/text.ts +28 -28
  153. package/tailwind.config.cjs +8 -8
  154. package/tsconfig.json +28 -28
  155. package/uno.config.ts +256 -256
@@ -1,101 +1,101 @@
1
- ---
2
- const { activeCategorySlug, locale, class: className } = Astro.props;
3
-
4
- import { getTranslatedLink } from "@utils/text/getTranslatedLink"
5
- import { getMainCategoryList } from "@utils/category/getMainCategoryList"
6
- import { Image } from 'astro:assets'
7
-
8
- import i18next, { t } from "i18next";
9
- const categories = await getMainCategoryList()
10
- const imgDomain = 'https://api.polo.blue/img/';
11
-
12
- const activeIndex = activeCategorySlug && categories ? categories.map(a => a.slug).findIndex(e => e === activeCategorySlug) : 0
13
- ---
14
- <!-- <div class={`cat-menu ${className ? className : ''}`}
15
- data-pagefind-ignore
16
- itemscope itemtype="https://schema.org/SiteNavigationElement"
17
- transition:persist={`catcarousel${activeIndex}`}
18
- transition:animate="none"
19
- > -->
20
- <swiper-container
21
- class={`categories-carousel flex pb-1 sm:pb-0 bg-white cat-menu ${className ? className : ''}`}
22
- data-pagefind-ignore
23
- itemscope itemtype="https://schema.org/SiteNavigationElement"
24
- transition:persist={`catcarousel${activeIndex}`}
25
- transition:animate="none"
26
- data-active={activeIndex}
27
- initial-slide={activeIndex}
28
- space-between="0"
29
- slides-per-view="auto"
30
- scrollbar="true"
31
- draggable="true"
32
- keyboard
33
- free-mode
34
- data-off-observer
35
- run-callbacks-on-init="false"
36
- >
37
- {
38
- categories.map((category, index) => (
39
- <swiper-slide itemprop="hasPart" role="presentation"
40
- class={`swiper-slide cats-slide group ${category.slug === activeCategorySlug ? 'active': ''}`}
41
- >
42
- <a href={getTranslatedLink(`/${category.slug}/`)}
43
- class="carousel-item"
44
- >
45
- {
46
- // itemprop="url"
47
- // role="menuitem"
48
- // aria-label={ t(`cat.${category.slug}.name`) }
49
- }
50
-
51
- <Image
52
- src={`${imgDomain}${category.photo}`}
53
- alt={t(`cat.${category.slug}.desc`).split('. ', 1)[0]}
54
- height="70"
55
- width="70"
56
- format="avif"
57
- loading="eager"
58
- onerror="this.style.display='none';"
59
- class="cats-img"
60
- />
61
- <div class="swiper-lazy-preloader"></div>
62
-
63
- <div class="cat-name"
64
- // itemprop="name"
65
- >
66
- { t(`cat.${category.slug}.name`) }
67
- </div>
68
- </a>
69
- </swiper-slide>
70
- ))
71
- }
72
-
73
- </swiper-container>
74
- <!-- </div> -->
75
-
76
- <style >
77
- .active {
78
- @apply bg-blue-700 text-white bg-opacity-100;
79
-
80
- &:not(:hover) .cats-img {
81
- filter: invert(100%);
82
- /* // @apply filter-invert; */
83
- }
84
-
85
- }
86
-
87
- .categories-carousel {
88
- @apply overflow-hidden;
89
-
90
- &.swiper-initialized {
91
- .img-preloader {
92
- display: none;
93
- }
94
- }
95
- }
96
-
97
- .swiper-slide {
98
- @apply transition w-[calc(100%/3.55)] min-w-[calc(100%/3.55)] sm:w-35 sm:min-w-35 3xl:min-w-[calc(100%/12.5-4px)];
99
- }
100
-
101
- </style>
1
+ ---
2
+ const { activeCategorySlug, locale, class: className } = Astro.props;
3
+
4
+ import { getTranslatedLink } from "@utils/text/getTranslatedLink"
5
+ import { getMainCategoryList } from "@utils/category/getMainCategoryList"
6
+ import { Image } from 'astro:assets'
7
+
8
+ import i18next, { t } from "i18next";
9
+ const categories = await getMainCategoryList()
10
+ const imgDomain = 'https://api.polo.blue/img/';
11
+
12
+ const activeIndex = activeCategorySlug && categories ? categories.map(a => a.slug).findIndex(e => e === activeCategorySlug) : 0
13
+ ---
14
+ <!-- <div class={`cat-menu ${className ? className : ''}`}
15
+ data-pagefind-ignore
16
+ itemscope itemtype="https://schema.org/SiteNavigationElement"
17
+ transition:persist={`catcarousel${activeIndex}`}
18
+ transition:animate="none"
19
+ > -->
20
+ <swiper-container
21
+ class={`categories-carousel flex pb-1 sm:pb-0 bg-white cat-menu ${className ? className : ''}`}
22
+ data-pagefind-ignore
23
+ itemscope itemtype="https://schema.org/SiteNavigationElement"
24
+ transition:persist={`catcarousel${activeIndex}`}
25
+ transition:animate="none"
26
+ data-active={activeIndex}
27
+ initial-slide={activeIndex}
28
+ space-between="0"
29
+ slides-per-view="auto"
30
+ scrollbar="true"
31
+ draggable="true"
32
+ keyboard
33
+ free-mode
34
+ data-off-observer
35
+ run-callbacks-on-init="false"
36
+ >
37
+ {
38
+ categories.map((category, index) => (
39
+ <swiper-slide itemprop="hasPart" role="presentation"
40
+ class={`swiper-slide cats-slide group ${category.slug === activeCategorySlug ? 'active': ''}`}
41
+ >
42
+ <a href={getTranslatedLink(`/${category.slug}/`)}
43
+ class="carousel-item"
44
+ >
45
+ {
46
+ // itemprop="url"
47
+ // role="menuitem"
48
+ // aria-label={ t(`cat.${category.slug}.name`) }
49
+ }
50
+
51
+ <Image
52
+ src={`${imgDomain}${category.photo}`}
53
+ alt={t(`cat.${category.slug}.desc`).split('. ', 1)[0]}
54
+ height="70"
55
+ width="70"
56
+ format="avif"
57
+ loading="eager"
58
+ onerror="this.style.display='none';"
59
+ class="cats-img"
60
+ />
61
+ <div class="swiper-lazy-preloader"></div>
62
+
63
+ <div class="cat-name"
64
+ // itemprop="name"
65
+ >
66
+ { t(`cat.${category.slug}.name`) }
67
+ </div>
68
+ </a>
69
+ </swiper-slide>
70
+ ))
71
+ }
72
+
73
+ </swiper-container>
74
+ <!-- </div> -->
75
+
76
+ <style >
77
+ .active {
78
+ @apply bg-blue-700 text-white bg-opacity-100;
79
+
80
+ &:not(:hover) .cats-img {
81
+ filter: invert(100%);
82
+ /* // @apply filter-invert; */
83
+ }
84
+
85
+ }
86
+
87
+ .categories-carousel {
88
+ @apply overflow-hidden;
89
+
90
+ &.swiper-initialized {
91
+ .img-preloader {
92
+ display: none;
93
+ }
94
+ }
95
+ }
96
+
97
+ .swiper-slide {
98
+ @apply transition w-[calc(100%/3.55)] min-w-[calc(100%/3.55)] sm:w-35 sm:min-w-35 3xl:min-w-[calc(100%/12.5-4px)];
99
+ }
100
+
101
+ </style>
@@ -1,187 +1,187 @@
1
- ---
2
- // import { Category } from 'types/index';
3
- import CategoryLink from "@components/Category/CategoryLink.vue"
4
- import SubCategoryLink from "@components/Category/SubCategoryLink.vue"
5
-
6
-
7
- // import { useTranslation } from "i18next-vue";
8
- // const { i18next, t } = useTranslation();
9
-
10
- import i18next, { t } from 'i18next';
11
- import { Icon } from 'astro-icon/components';
12
- import { isSidebarOpen } from '../../stores/info.js';
13
- import { useStore } from '@nanostores/vue';
14
- import { getCategoryList } from "@utils/category/getCategoryList"
15
-
16
-
17
- import { createSubCatLink, createSubSubCatLink} from "@utils/db"
18
- // import type { SubCategory } from 'types/index'
19
-
20
-
21
- // read the store value with the `useStore` hook
22
- const $isSidebarOpen = useStore(isSidebarOpen);
23
- const { catParameters, activeSubCategorySlug, activeSubSubCategorySlug, locale } = Astro.props;
24
-
25
-
26
-
27
- const isActiveSubCategory = (subCategorySlug: string) => {
28
- getCategoryList(i18next.language) // hack to create translations
29
- return categories.activeSubCategory !== null && categories.activeSubCategory === subCategorySlug
30
- }
31
-
32
- // const hideSidebar = () => {
33
- // sidebar.setMode(false)
34
- // }
35
-
36
- // const isActiveSubCategory = null
37
-
38
- // const sidebar = reactive({
39
- // isShow: true
40
- // })
41
-
42
- const categories = {
43
- activeCategory: catParameters.category,
44
- activeSubCategory: activeSubCategorySlug ? activeSubCategorySlug : catParameters.category.children ? catParameters.category.children[0] : null,
45
- activeSubSubCategory: null
46
- }
47
-
48
- const info = {
49
- isMobile: false,
50
- }
51
-
52
- const isShowCatMobileMenu = false
53
-
54
- ---
55
-
56
- <div data-pagefind-ignore id="sidebar" transition:name="sidebar" transition:animate="fade"
57
-
58
- class="
59
- sidebar mb-4 fixed top-0 ease delay-100 flex-col ml-0 overflow-hidden z-40 sm:z-0 md:(relative transition-all w-1/4 max-w-64 min-w-56 overflow-visible)" >
60
- <!-- :class="showSidebar ? 'w-screen h-full-mobile md:h-auto' : 'h-0 w-0 fixed md:(h-auto -ml-64 static)'" -->
61
- { categories.activeSubCategory !== null && categories.activeCategory && categories.activeCategory.children && (
62
- <div
63
- class="subcat-menu bg-white sm:border box-border sm:border-gray-200 dark:sm:border-gray-500 sm:border-l-0 md:sticky md:top-14 bg-white dark:bg-blue-901 z-10 sm:mb-2 h-full md:h-auto pb-3 h-sidebar max-h-sidebar sm:h-auto sm:max-h-auto"
64
- >
65
- <div class={`subcategories flex-col pb-3 ${categories.activeSubSubCategory !== null ? 'additional-subcategories' : ''}`} >
66
- <div class="sidebar-title">
67
- <span>{ t('heading.subcategories') }</span>
68
- <br>
69
- </div>
70
- <ul>
71
- {
72
- categories.activeCategory.children.map((subcategory) => (
73
- <li class="border-b-1 border-gray-100 sm:border-none">
74
- <CategoryLink
75
- active={isActiveSubCategory(subcategory.slug)}
76
- text={t(`cat.${categories.activeCategory.slug}.${subcategory.slug}.name`)}
77
- href={createSubCatLink(locale, catParameters.category.slug, subcategory.slug)}
78
- />
79
- {
80
- isActiveSubCategory(subcategory.slug) && (
81
- <div>
82
- { catParameters.category && catParameters.subcategory && catParameters.subcategory && catParameters.subcategory && catParameters.subcategory.children && (
83
- <ul
84
- class="subcategories sm:pb-2"
85
- >
86
- {
87
- catParameters.subcategory.children.map((subsubcategory) => (
88
- <li
89
- class="border-t-1 border-gray-100 sm:border-none"
90
- >
91
- <SubCategoryLink
92
- active={catParameters.subcategory && activeSubSubCategorySlug === subsubcategory.slug}
93
- text={subsubcategory.name || `missing subsubcat name ${subsubcategory.slug}`}
94
- href={createSubSubCatLink(locale, catParameters.category.slug, subcategory.slug, subsubcategory.slug)}
95
- />
96
- </li>
97
- ))
98
- }
99
-
100
- </ul>
101
- )
102
- }
103
- </div>
104
- )
105
- }
106
- </li>
107
- ))
108
- }
109
- </ul>
110
- </div>
111
-
112
-
113
- <button
114
- class="absolute top-2.5 left-2 text-3xl w-9 h-9 hidden md:hidden"
115
- onclick="toggleCatMenu()"
116
- aria-label="Menu"
117
- >
118
- <Icon name="octicon:chevron-left-24" class="" />
119
- </button>
120
- <button
121
- class="absolute top-2.5 right-2 text-3xl w-9 h-9 md:hidden"
122
- onclick="hideSidebar()"
123
- aria-label="X"
124
- >
125
- <Icon name="octicon:x-24" class="" />
126
- </button>
127
-
128
- </div>
129
- )
130
- }
131
-
132
-
133
-
134
-
135
- <div id="ga-sidebar"></div>
136
- </div>
137
-
138
- <style scoped>
139
-
140
- .sidebar {
141
-
142
- @media (max-width: 768px) {
143
- &.show {
144
- @apply w-screen h-full-mobile md:h-auto;
145
- }
146
-
147
- &:not(.show){
148
- @apply h-0 w-0 fixed md:(h-auto -ml-64 static);
149
- }
150
- }
151
-
152
- &.collapsed {
153
- @apply md:max-w-0 md:min-w-0;
154
- }
155
-
156
- }
157
-
158
- .subcategories {
159
-
160
- .active {
161
- // @apply bg-blue-700 text-white;
162
- @apply bg-gray-200 sm:bg-white dark:(bg-blue-901 text-white) text-blue-600 font-600;
163
-
164
- a {
165
- color: inherit;
166
- }
167
- }
168
-
169
- .s-active {
170
- @apply bg-gray-100 sm:bg-white dark:(bg-blue-901 text-white) text-blue-600 border-gray-400;
171
- }
172
- }
173
-
174
- .form-check-input {
175
- @apply appearance-none h-4 w-4 border border-gray-300 bg-white checked:bg-lightBlue-500 checked:border-lightBlue-500 focus:outline-none transition duration-200 mt-1 align-top bg-no-repeat bg-center bg-contain float-left mr-2 cursor-pointer;
176
- }
177
-
178
- .form-check-input:checked[type=checkbox] {
179
- background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e");
180
- }
181
- </style>
182
- <script is:inline>
183
- function hideSidebar() {
184
- document.getElementById('sidebar').classList.remove("show");
185
- document.body.classList.remove('overflow-hidden')
186
- }
1
+ ---
2
+ // import { Category } from 'types/index';
3
+ import CategoryLink from "@components/Category/CategoryLink.vue"
4
+ import SubCategoryLink from "@components/Category/SubCategoryLink.vue"
5
+
6
+
7
+ // import { useTranslation } from "i18next-vue";
8
+ // const { i18next, t } = useTranslation();
9
+
10
+ import i18next, { t } from 'i18next';
11
+ import { Icon } from 'astro-icon/components';
12
+ import { isSidebarOpen } from '../../stores/info.js';
13
+ import { useStore } from '@nanostores/vue';
14
+ import { getCategoryList } from "@utils/category/getCategoryList"
15
+
16
+
17
+ import { createSubCatLink, createSubSubCatLink} from "@utils/db"
18
+ // import type { SubCategory } from 'types/index'
19
+
20
+
21
+ // read the store value with the `useStore` hook
22
+ const $isSidebarOpen = useStore(isSidebarOpen);
23
+ const { catParameters, activeSubCategorySlug, activeSubSubCategorySlug, locale } = Astro.props;
24
+
25
+
26
+
27
+ const isActiveSubCategory = (subCategorySlug: string) => {
28
+ getCategoryList(i18next.language) // hack to create translations
29
+ return categories.activeSubCategory !== null && categories.activeSubCategory === subCategorySlug
30
+ }
31
+
32
+ // const hideSidebar = () => {
33
+ // sidebar.setMode(false)
34
+ // }
35
+
36
+ // const isActiveSubCategory = null
37
+
38
+ // const sidebar = reactive({
39
+ // isShow: true
40
+ // })
41
+
42
+ const categories = {
43
+ activeCategory: catParameters.category,
44
+ activeSubCategory: activeSubCategorySlug ? activeSubCategorySlug : catParameters.category.children ? catParameters.category.children[0] : null,
45
+ activeSubSubCategory: null
46
+ }
47
+
48
+ const info = {
49
+ isMobile: false,
50
+ }
51
+
52
+ const isShowCatMobileMenu = false
53
+
54
+ ---
55
+
56
+ <div data-pagefind-ignore id="sidebar" transition:name="sidebar" transition:animate="fade"
57
+
58
+ class="
59
+ sidebar mb-4 fixed top-0 ease delay-100 flex-col ml-0 overflow-hidden z-40 sm:z-0 md:(relative transition-all w-1/4 max-w-64 min-w-56 overflow-visible)" >
60
+ <!-- :class="showSidebar ? 'w-screen h-full-mobile md:h-auto' : 'h-0 w-0 fixed md:(h-auto -ml-64 static)'" -->
61
+ { categories.activeSubCategory !== null && categories.activeCategory && categories.activeCategory.children && (
62
+ <div
63
+ class="subcat-menu bg-white sm:border box-border sm:border-gray-200 dark:sm:border-gray-500 sm:border-l-0 md:sticky md:top-14 bg-white dark:bg-blue-901 z-10 sm:mb-2 h-full md:h-auto pb-3 h-sidebar max-h-sidebar sm:h-auto sm:max-h-auto"
64
+ >
65
+ <div class={`subcategories flex-col pb-3 ${categories.activeSubSubCategory !== null ? 'additional-subcategories' : ''}`} >
66
+ <div class="sidebar-title">
67
+ <span>{ t('heading.subcategories') }</span>
68
+ <br>
69
+ </div>
70
+ <ul>
71
+ {
72
+ categories.activeCategory.children.map((subcategory) => (
73
+ <li class="border-b-1 border-gray-100 sm:border-none">
74
+ <CategoryLink
75
+ active={isActiveSubCategory(subcategory.slug)}
76
+ text={t(`cat.${categories.activeCategory.slug}.${subcategory.slug}.name`)}
77
+ href={createSubCatLink(locale, catParameters.category.slug, subcategory.slug)}
78
+ />
79
+ {
80
+ isActiveSubCategory(subcategory.slug) && (
81
+ <div>
82
+ { catParameters.category && catParameters.subcategory && catParameters.subcategory && catParameters.subcategory && catParameters.subcategory.children && (
83
+ <ul
84
+ class="subcategories sm:pb-2"
85
+ >
86
+ {
87
+ catParameters.subcategory.children.map((subsubcategory) => (
88
+ <li
89
+ class="border-t-1 border-gray-100 sm:border-none"
90
+ >
91
+ <SubCategoryLink
92
+ active={catParameters.subcategory && activeSubSubCategorySlug === subsubcategory.slug}
93
+ text={subsubcategory.name || `missing subsubcat name ${subsubcategory.slug}`}
94
+ href={createSubSubCatLink(locale, catParameters.category.slug, subcategory.slug, subsubcategory.slug)}
95
+ />
96
+ </li>
97
+ ))
98
+ }
99
+
100
+ </ul>
101
+ )
102
+ }
103
+ </div>
104
+ )
105
+ }
106
+ </li>
107
+ ))
108
+ }
109
+ </ul>
110
+ </div>
111
+
112
+
113
+ <button
114
+ class="absolute top-2.5 left-2 text-3xl w-9 h-9 hidden md:hidden"
115
+ onclick="toggleCatMenu()"
116
+ aria-label="Menu"
117
+ >
118
+ <Icon name="octicon:chevron-left-24" class="" />
119
+ </button>
120
+ <button
121
+ class="absolute top-2.5 right-2 text-3xl w-9 h-9 md:hidden"
122
+ onclick="hideSidebar()"
123
+ aria-label="X"
124
+ >
125
+ <Icon name="octicon:x-24" class="" />
126
+ </button>
127
+
128
+ </div>
129
+ )
130
+ }
131
+
132
+
133
+
134
+
135
+ <div id="ga-sidebar"></div>
136
+ </div>
137
+
138
+ <style scoped>
139
+
140
+ .sidebar {
141
+
142
+ @media (max-width: 768px) {
143
+ &.show {
144
+ @apply w-screen h-full-mobile md:h-auto;
145
+ }
146
+
147
+ &:not(.show){
148
+ @apply h-0 w-0 fixed md:(h-auto -ml-64 static);
149
+ }
150
+ }
151
+
152
+ &.collapsed {
153
+ @apply md:max-w-0 md:min-w-0;
154
+ }
155
+
156
+ }
157
+
158
+ .subcategories {
159
+
160
+ .active {
161
+ // @apply bg-blue-700 text-white;
162
+ @apply bg-gray-200 sm:bg-white dark:(bg-blue-901 text-white) text-blue-600 font-600;
163
+
164
+ a {
165
+ color: inherit;
166
+ }
167
+ }
168
+
169
+ .s-active {
170
+ @apply bg-gray-100 sm:bg-white dark:(bg-blue-901 text-white) text-blue-600 border-gray-400;
171
+ }
172
+ }
173
+
174
+ .form-check-input {
175
+ @apply appearance-none h-4 w-4 border border-gray-300 bg-white checked:bg-lightBlue-500 checked:border-lightBlue-500 focus:outline-none transition duration-200 mt-1 align-top bg-no-repeat bg-center bg-contain float-left mr-2 cursor-pointer;
176
+ }
177
+
178
+ .form-check-input:checked[type=checkbox] {
179
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e");
180
+ }
181
+ </style>
182
+ <script is:inline>
183
+ function hideSidebar() {
184
+ document.getElementById('sidebar').classList.remove("show");
185
+ document.body.classList.remove('overflow-hidden')
186
+ }
187
187
  </script>