spoko-design-system 0.0.8 → 0.1.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.
Files changed (38) hide show
  1. package/package.json +1 -1
  2. package/src/components/Badges.vue +2 -5
  3. package/src/components/Breadcrumbs.vue +2 -2
  4. package/src/components/Button.vue +1 -5
  5. package/src/components/ButtonCopy.vue +8 -8
  6. package/src/components/Card.astro +22 -20
  7. package/src/components/Carousel.astro +14 -29
  8. package/src/components/Copyright.astro +9 -9
  9. package/src/components/FuckRussia.vue +22 -7
  10. package/src/components/Header/Header.astro +1 -2
  11. package/src/components/Headline.vue +1 -6
  12. package/src/components/Image.astro +19 -17
  13. package/src/components/Jumbatron.vue +1 -1
  14. package/src/components/LeftSidebar.astro +38 -30
  15. package/src/components/MainColors.vue +8 -14
  16. package/src/components/MainInput.vue +9 -12
  17. package/src/components/MainTable.vue +0 -2
  18. package/src/components/Modal.astro +13 -13
  19. package/src/components/PageContent.astro +3 -11
  20. package/src/components/PostHeader.astro +1 -2
  21. package/src/components/PrCode.vue +2 -1
  22. package/src/components/ProductCarousel.astro +38 -0
  23. package/src/components/ProductNumber.astro +1 -2
  24. package/src/components/ProductTile.astro +0 -4
  25. package/src/components/SlimBanner.vue +26 -15
  26. package/src/components/TableOfContents.astro +12 -9
  27. package/src/components/Translations.vue +4 -8
  28. package/src/components/flags/FlagPL.vue +2 -1
  29. package/src/config.ts +1 -0
  30. package/src/layouts/Layout.astro +48 -33
  31. package/src/layouts/MainLayout.astro +71 -48
  32. package/src/pages/components/carousel.mdx +44 -2
  33. package/src/pages/components/product-tile.mdx +18 -6
  34. package/src/pages/components/slimbanner.mdx +7 -7
  35. package/src/pages/core/introduction.mdx +1 -0
  36. package/uno.config.ts +1 -1
  37. package/src/components/Header/AstroLogo.astro +0 -7
  38. package/src/components/RightSidebar.astro +0 -12
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "spoko-design-system",
3
- "version": "0.0.8",
3
+ "version": "0.1.0",
4
4
  "private": false,
5
5
  "scripts": {
6
6
  "dev": "astro dev",
@@ -15,10 +15,7 @@ const props = defineProps({
15
15
 
16
16
  <template>
17
17
  <div v-if="(props.badges && props.badges.length > 0)" class="absolute z-2">
18
- <Badge
19
- v-for="(badge, index) in props.badges" :key="index"
20
- :badge="badge"
21
- :class="(badge.toLocaleLowerCase().includes('gti') ? 'bg-red-600' : badge.toLocaleLowerCase().includes('motorsport') ? 'bg-blue-600' : 'bg-black')"
22
- />
18
+ <Badge v-for="(badge, index) in props.badges" :key="index" :badge="badge"
19
+ :class="(badge.toLocaleLowerCase().includes('gti') ? 'bg-red-600' : badge.toLocaleLowerCase().includes('motorsport') ? 'bg-blue-600' : 'bg-black')" />
23
20
  </div>
24
21
  </template>
@@ -30,7 +30,6 @@ const props = defineProps({
30
30
  required: false,
31
31
  default: null
32
32
  }
33
-
34
33
  })
35
34
 
36
35
  const isLast = (index: Number) => {
@@ -105,4 +104,5 @@ const isLast = (index: Number) => {
105
104
  color: inherit;
106
105
  }
107
106
  }
108
- }</style>
107
+ }
108
+ </style>
@@ -18,7 +18,6 @@ const props = defineProps<{
18
18
  }>();
19
19
 
20
20
  const tag = props.href && props.href.length ? 'a' : 'button'
21
-
22
21
  const classes = {
23
22
  "btn-primary": props.primary,
24
23
  "btn-primary-outline": props.primaryOutline,
@@ -33,13 +32,10 @@ const classes = {
33
32
  "btn-normal": !props.small && !props.medium,
34
33
  "rounded-full": props.rounded
35
34
  };
36
-
37
-
38
35
  </script>
39
36
 
40
-
41
37
  <template>
42
- <component :is="tag" :class="classes" :href="props.href" :title="props.title ? props.title : null">
38
+ <component :is="tag" :class="classes" :href="props.href" :title="props.title ? props.title : null">
43
39
  <slot></slot>
44
40
  </component>
45
41
  </template>
@@ -29,9 +29,9 @@ const { copy, copied, isSupported } = useClipboard({ source });
29
29
  </script>
30
30
 
31
31
  <template>
32
- <button v-if="isSupported" :aria-label="String(texts.copy)"
33
- class="btn-copy has-tooltip" @click="copy()">
34
- <span :class="`tooltip rounded-full btn-copy-text ${tooltipClasses}`" :data-text="!copied ? texts.copy : texts.copied" />
32
+ <button v-if="isSupported" :aria-label="String(texts.copy)" class="btn-copy has-tooltip" @click="copy()">
33
+ <span :class="`tooltip rounded-full btn-copy-text ${tooltipClasses}`"
34
+ :data-text="!copied ? texts.copy : texts.copied" />
35
35
  <Icon icon="ph-copy-simple-light" class="leading-none w-full h-full" />
36
36
  </button>
37
37
  </template>
@@ -39,9 +39,9 @@ const { copy, copied, isSupported } = useClipboard({ source });
39
39
  <style>
40
40
  .tooltip {
41
41
  @apply invisible absolute;
42
- }
43
-
44
- .has-tooltip:hover .tooltip {
45
- @apply visible z-50;
46
- }
42
+ }
43
+
44
+ .has-tooltip:hover .tooltip {
45
+ @apply visible z-50;
46
+ }
47
47
  </style>
@@ -1,25 +1,27 @@
1
1
  ---
2
2
  const { class: className, imgSrc, imgAlt, href } = Astro.props;
3
3
 
4
- import Image from '../components/Image.astro'
4
+ import Image from "../components/Image.astro";
5
5
  ---
6
6
 
7
- <div class="bg-white border border-gray-200 rounded-lg shadow dark:bg-gray-800 dark:border-gray-700 overflow-hidden">
8
- <a href={href} class="aspect-ratio-video block relative">
9
- { imgSrc && (
10
- <Image
11
- imageObject={
12
- {
13
- src: imgSrc,
14
- alt: imgAlt,
15
- height: '405',
16
- width: '720',
17
- }
18
- }
19
- />
20
- )}
21
- </a>
22
- <div class="p-5">
23
- <slot />
24
- </div>
25
- </div>
7
+ <div
8
+ class="bg-white border border-gray-200 rounded-lg shadow dark:bg-gray-800 dark:border-gray-700 overflow-hidden"
9
+ >
10
+ <a href={href} class="aspect-ratio-video block relative">
11
+ {
12
+ imgSrc && (
13
+ <Image
14
+ imageObject={{
15
+ src: imgSrc,
16
+ alt: imgAlt,
17
+ height: "405",
18
+ width: "720",
19
+ }}
20
+ />
21
+ )
22
+ }
23
+ </a>
24
+ <div class="p-5">
25
+ <slot />
26
+ </div>
27
+ </div>
@@ -1,19 +1,15 @@
1
1
  ---
2
-
2
+ export const productObject = {
3
+ name: "Combi-instrument MFA+",
4
+ url: "https://google.com",
5
+ number: "6R0920870F",
6
+ photo:
7
+ "https://img.freepik.com/darmowe-wektory/tlo-retro-modeli-geometrycznych_52683-17902.jpg?w=1380&t=st=1706311337",
8
+ };
3
9
  ---
4
- <script>
5
- import { register } from "swiper/element/bundle";
6
-
7
- document.addEventListener("astro:page-load", () => {
8
- //"DOMContentLoaded"
9
- // register Swiper custom elements
10
- register();
11
- })
12
-
13
- </script>
14
10
 
15
11
  <swiper-container
16
- class="max-w=full w-full flex"
12
+ class="max-w-full w-full flex overflow-hidden"
17
13
  grid-rows="1"
18
14
  mousewheel-force-to-axis="true"
19
15
  navigation="true"
@@ -22,20 +18,9 @@
22
18
  slides-per-view="auto"
23
19
  space-between="0"
24
20
  >
25
- <swiper-slide class="bg-blue-50 p-12 border-1">
26
- A
27
- </swiper-slide>
28
- <swiper-slide class="bg-blue-100 p-12 border-1">
29
- B
30
- </swiper-slide>
31
- <swiper-slide class="bg-blue-200 p-12 border-1">
32
- C
33
- </swiper-slide>
34
- <swiper-slide class="bg-blue-300 p-12 border-1">
35
- D
36
- </swiper-slide>
37
- <swiper-slide class="bg-blue-400 p-12 border-1">
38
- A
39
- </swiper-slide>
40
-
41
- </swiper-container>
21
+ <swiper-slide class="bg-blue-50 p-12 border-1 min-w-full">A</swiper-slide>
22
+ <swiper-slide class="bg-blue-100 p-12 border-1 min-w-full">B</swiper-slide>
23
+ <swiper-slide class="bg-blue-200 p-12 border-1 min-w-full">C</swiper-slide>
24
+ <swiper-slide class="bg-blue-300 p-12 border-1 min-w-full">D</swiper-slide>
25
+ <swiper-slide class="bg-blue-400 p-12 border-1 min-w-full">A</swiper-slide>
26
+ </swiper-container>
@@ -1,12 +1,12 @@
1
1
  ---
2
- const { class: className } = Astro.props
2
+ const { class: className } = Astro.props;
3
3
  ---
4
4
 
5
- <div class="bg-vw h-11 flex items-center font-headlight justify-between px-4" class:list={[className]}>
6
- <slot name="left-item"/>
7
- <slot name="middle-item"/>
8
- <slot name="right-item"/>
9
- </div>
10
-
11
-
12
-
5
+ <div
6
+ class="bg-vw h-11 flex items-center font-headlight justify-between px-4"
7
+ class:list={[className]}
8
+ >
9
+ <slot name="left-item" />
10
+ <slot name="middle-item" />
11
+ <slot name="right-item" />
12
+ </div>
@@ -21,7 +21,7 @@
21
21
 
22
22
  <style lang="scss">
23
23
  .bg-ukraine {
24
- background: linear-gradient(180deg, #0066cc 56%, rgba(255,204,0,1) 44%);
24
+ background: linear-gradient(180deg, #0066cc 56%, rgba(255, 204, 0, 1) 44%);
25
25
  }
26
26
 
27
27
  .animate-bull {
@@ -49,17 +49,32 @@
49
49
  }
50
50
 
51
51
  @keyframes AnimateBull1 {
52
- 0% {transform: translate(14px,0px);}
53
- 100% {transform: translate(86px,0px);}
52
+ 0% {
53
+ transform: translate(14px, 0px);
54
+ }
55
+
56
+ 100% {
57
+ transform: translate(86px, 0px);
58
+ }
54
59
  }
55
60
 
56
61
  @keyframes AnimateBull2 {
57
- 0% {transform: translate(38px,0px);}
58
- 100% {transform: translate(80px,0px);}
62
+ 0% {
63
+ transform: translate(38px, 0px);
64
+ }
65
+
66
+ 100% {
67
+ transform: translate(80px, 0px);
68
+ }
59
69
  }
60
70
 
61
71
  @keyframes AnimateBull3 {
62
- 0% {transform: translate(62px,0px);}
63
- 100% {transform: translate(88px,0px);}
72
+ 0% {
73
+ transform: translate(62px, 0px);
74
+ }
75
+
76
+ 100% {
77
+ transform: translate(88px, 0px);
78
+ }
64
79
  }
65
80
  </style>
@@ -64,9 +64,8 @@ import Search from "astro-pagefind/components/Search";
64
64
  @apply h-10 border-0 border-gray-800 rounded-3xl hidden md:block;
65
65
  }
66
66
  .pagefind-ui {
67
-
68
67
  @apply font-textlight text-base;
69
-
68
+
70
69
  &__search-input {
71
70
  height: 40px !important;
72
71
  border: 0;
@@ -1,7 +1,6 @@
1
1
  <script setup lang="ts">
2
2
  import type { PropType } from 'vue'
3
3
 
4
-
5
4
  const props = defineProps({
6
5
  as: {
7
6
  type: String as PropType<'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'p' | 'div' | 'span'>,
@@ -19,20 +18,16 @@ const props = defineProps({
19
18
  default: false
20
19
  }
21
20
  })
22
-
23
21
  </script>
24
22
 
25
23
  <template>
26
24
  <component :is="props.as" class="mb-2.5 flex sm:block md:flex items-center leading-none"
27
25
  :class="`headline ${props.textSize ? `text-${props.textSize}` : 'text-xl'} ${props.underline ? 'headline--underline' : ''}`">
28
- <!-- default -->
29
26
  <slot />
30
-
31
27
  </component>
32
28
  </template>
33
29
 
34
30
  <style lang="scss">
35
-
36
31
  .headline--underline {
37
32
  @apply relative pb-4;
38
33
 
@@ -57,4 +52,4 @@ const props = defineProps({
57
52
  background-color: #64748b
58
53
  }
59
54
  }
60
- </style>
55
+ </style>
@@ -1,28 +1,30 @@
1
1
  ---
2
- import { Image } from 'astro:assets'
2
+ import { Image } from "astro:assets";
3
3
 
4
4
  const { imageObject } = Astro.props;
5
5
  let inputProps = {};
6
6
 
7
7
  if (imageObject.index && imageObject.index === 1) {
8
- inputProps['data-pagefind-meta'] = 'image[src], image_alt[alt]';
9
- inputProps['loading'] = 'eager'
8
+ inputProps["data-pagefind-meta"] = "image[src], image_alt[alt]";
9
+ inputProps["loading"] = "eager";
10
10
  }
11
11
 
12
12
  if (imageObject.srcset && imageObject.srcset.length) {
13
- inputProps['widths'] = imageObject.srcset
13
+ inputProps["widths"] = imageObject.srcset;
14
14
  }
15
-
16
15
  ---
17
- <Image
18
- src={imageObject.src}
19
- alt={imageObject.alt}
20
- height={imageObject.height}
21
- width={imageObject.width}
22
- itemprop="image"
23
- format="avif"
24
- data-pagefind-index-attrs="alt"
25
- onerror="this.style.display='none';"
26
- class={`h-full w-full select-none pointer-none ${imageObject.class || 'object-cover'}`}
27
- { ...inputProps}
28
- />
16
+
17
+ <Image
18
+ src={imageObject.src}
19
+ alt={imageObject.alt}
20
+ height={imageObject.height}
21
+ width={imageObject.width}
22
+ itemprop="image"
23
+ format="avif"
24
+ data-pagefind-index-attrs="alt"
25
+ onerror="this.style.display='none';"
26
+ class={`h-full w-full select-none pointer-none ${
27
+ imageObject.class || "object-cover"
28
+ }`}
29
+ {...inputProps}
30
+ />
@@ -19,7 +19,7 @@ const props = defineProps({
19
19
  <div class="max-w-7xl mx-auto my-auto">
20
20
  <div class="py-8 lg:w-full"
21
21
  :class="props.small ? 'sm:py-12 md:py-14 lg:py-16 xl:py-20' : 'sm:py-16 md:py-20 lg:py-28 xl:py-32'">
22
- <header class="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8"> <!-- sm:pt-12 md:pt-16 lg:pt-20 xl:pt-28 -->
22
+ <header class="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8">
23
23
  <div class="text-center">
24
24
  <h1 class="text-3xl tracking-tight sm:(text-4xl pt-0) md:text-5xl lg:text-6xl font-headlight text-white">
25
25
  <slot name="intro" />
@@ -1,45 +1,53 @@
1
1
  ---
2
- import { SIDEBAR } from '../config';
3
- import { Astronav, MenuItems} from "astro-navbar";
2
+ import { SIDEBAR } from "../config";
3
+ import { Astronav, MenuItems } from "astro-navbar";
4
4
  const { currentPage } = Astro.props;
5
5
  const currentPageMatch = currentPage.slice(1);
6
6
 
7
7
  const isCurrentPage = (item) => {
8
- if (item.link) {
9
- return item.link.includes(currentPageMatch);
10
- }
11
- return false;
8
+ if (item.link) {
9
+ return item.link.includes(currentPageMatch);
10
+ }
11
+ return false;
12
12
  };
13
13
 
14
14
  const getLinkClasses = (link) => {
15
- const baseClasses = "block py-1.5 px-6 my-1 transition-colors border-l hover:border-slate-400 text-slate-500 hover:text-slate-900"
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";
16
17
 
17
- if (isCurrentPage(link)) {
18
- return baseClasses + " border-slate-500 text-slate-900";
19
- } else {
20
- return baseClasses;
21
- }
22
- }
18
+ if (isCurrentPage(link)) {
19
+ return baseClasses + " border-slate-500 text-slate-900";
20
+ } else {
21
+ return baseClasses;
22
+ }
23
+ };
23
24
  ---
25
+
24
26
  <Astronav>
25
- <MenuItems 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)">
26
- <ul class="mt-0 mb-auto">
27
- {SIDEBAR.map(item => (item.header ?
28
- <h2 class="mt-4 font-semibold text-slate-700">{item.text}</h2> :
29
- <li class={getLinkClasses(item)}>
30
- <a href={item.link}>{item.text}</a>
31
- </li>
32
- ))}
33
- </ul>
34
- </MenuItems>
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>
35
44
  </Astronav>
36
45
 
37
46
  <script is:inline>
38
- window.addEventListener('DOMContentLoaded', (event) => {
39
- var target = document.querySelector('[aria-current="page"]');
40
- if (target && target.offsetTop > window.innerHeight - 100) {
41
- document.querySelector('.nav-groups').scrollTop = target.offsetTop;
42
- }
43
- });
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
+ });
44
53
  </script>
45
-
@@ -1,16 +1,17 @@
1
+ <script setup lang="ts">
2
+ import { COLORS } from "../design.config";
3
+
4
+ const colorNames = Object.keys(COLORS);
5
+ </script>
6
+
1
7
  <template>
2
8
  <div class="flex flex-col space-y-12">
3
9
  <div v-for="name in colorNames" :key="name">
4
10
  <h3 class="capitalize">{{ name }}</h3>
5
11
  <div class="grid grid-cols-3 md:grid-cols-9">
6
12
  <div v-for="color in COLORS[name]" :key="color" class="mb-6">
7
- <div
8
- class="h-12 transition-all"
9
- :style="`background: ${color.value}`"
10
- ></div>
11
- <div
12
- class="text-sm flex flex-col text-center font-mono text-slate-500"
13
- >
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">
14
15
  <span>{{ color.name }}</span>
15
16
  <span class="uppercase text-xs">{{ color.value }}</span>
16
17
  </div>
@@ -20,10 +21,3 @@
20
21
  </div>
21
22
  </template>
22
23
 
23
- <script setup lang="ts">
24
- import { COLORS } from "../design.config";
25
-
26
- const colorNames = Object.keys(COLORS);
27
- </script>
28
-
29
- <style scoped></style>
@@ -1,18 +1,15 @@
1
+ <script setup lang="ts">
2
+ const props = defineProps<{
3
+ label: string;
4
+ }>();
5
+ </script>
6
+
1
7
  <template>
2
8
  <label class="group text-left w-full max-w-xs flex flex-col">
3
- <span
4
- class="group-hover:text-blue-600 ml-2 text-slate-600 text-sm group-focus-within:text-blue-600"
5
- >{{ label }}</span
6
- >
9
+ <span class="group-hover:text-blue-600 ml-2 text-slate-600 text-sm group-focus-within:text-blue-600">{{ label
10
+ }}</span>
7
11
  <input
8
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"
9
- type="text"
10
- />
13
+ type="text" />
11
14
  </label>
12
15
  </template>
13
-
14
- <script setup lang="ts">
15
- const props = defineProps<{
16
- label: string;
17
- }>();
18
- </script>
@@ -11,8 +11,6 @@ const capitalizeFirstLetter = (text: String) => {
11
11
 
12
12
  </script>
13
13
 
14
-
15
-
16
14
  <template>
17
15
  <table class="table-auto text-left border bg-white shadow-md">
18
16
  <thead class="bg-gray-500 text-white">
@@ -1,20 +1,20 @@
1
1
  ---
2
- const {id, open} = Astro.props;
3
- import Button from '../components/Button.vue'
2
+ const { id, open } = Astro.props;
3
+ import Button from "../components/Button.vue";
4
4
  ---
5
- <style lang="scss">
6
- dialog {
7
- @apply fixed top-0 left-0 right-0 bottom-0;
8
5
 
9
- &::backdrop {
10
- @apply bg-gray-500/50 fixed;
11
- top: 0px;
12
- right: 0px;
13
- bottom: 0px;
14
- left: 0px;
6
+ <style lang="scss">
7
+ dialog {
8
+ @apply fixed top-0 left-0 right-0 bottom-0;
15
9
 
10
+ &::backdrop {
11
+ @apply bg-gray-500/50 fixed;
12
+ top: 0px;
13
+ right: 0px;
14
+ bottom: 0px;
15
+ left: 0px;
16
+ }
16
17
  }
17
- }
18
18
  </style>
19
19
 
20
20
  <Button primary onclick={`window.${id}.showModal()`}>{open}</Button>
@@ -24,4 +24,4 @@ dialog {
24
24
  <form method="dialog">
25
25
  <slot name="close" />
26
26
  </form>
27
- </dialog>
27
+ </dialog>
@@ -1,13 +1,5 @@
1
- ---
2
- const { content, githubEditUrl } = Astro.props;
3
- const title = content.title;
4
- ---
5
-
6
1
  <article id="article" class="content">
7
- <section class="main-section">
8
- <nav class="block sm:hidden">
9
- </nav>
10
- <slot />
11
- </section>
2
+ <section class="main-section">
3
+ <slot />
4
+ </section>
12
5
  </article>
13
-
@@ -16,8 +16,7 @@ interface Props {
16
16
  }[];
17
17
  }
18
18
 
19
- const { image, title, categories, date, author } =
20
- Astro.props;
19
+ const { image, title, categories, date, author } = Astro.props;
21
20
  import CategoryLink from "./CategoryLink.astro";
22
21
  import Date from "./Date.astro";
23
22
  ---
@@ -20,7 +20,8 @@ const props = defineProps({
20
20
  </script>
21
21
 
22
22
  <template>
23
- <span data-pagefind-filter="PR-Code" class="btn-prcode " :class="`btn-prcode--${props.prcode} ${props.isPdp ? ' btn-prcode--pdp' : ''}`">
23
+ <span data-pagefind-filter="PR-Code" class="btn-prcode "
24
+ :class="`btn-prcode--${props.prcode} ${props.isPdp ? ' btn-prcode--pdp' : ''}`">
24
25
  {{ props.prcode }}
25
26
  </span>
26
27
  </template>
@@ -0,0 +1,38 @@
1
+ ---
2
+ import ProductTile from "../components/ProductTile.astro";
3
+ export const productObject = {
4
+ name: "Combi-instrument MFA+",
5
+ url: "https://google.com",
6
+ number: "6R0920870F",
7
+ photo:
8
+ "https://img.freepik.com/darmowe-wektory/tlo-retro-modeli-geometrycznych_52683-17902.jpg?w=1380&t=st=1706311337",
9
+ };
10
+ ---
11
+
12
+ <div class="bg-white rounded-lg p-4 w-full">
13
+ <swiper-container
14
+ class="flex w-full max-w-full"
15
+ grid-rows="1"
16
+ mousewheel-force-to-axis="true"
17
+ navigation="false"
18
+ scrollbar="false"
19
+ slides-per-view="auto"
20
+ space-between="0"
21
+ >
22
+ <swiper-slide class="carousel-product-tile">
23
+ <ProductTile productObject={productObject} />
24
+ </swiper-slide>
25
+ <swiper-slide class="carousel-product-tile">
26
+ <ProductTile productObject={productObject} />
27
+ </swiper-slide>
28
+ <swiper-slide class="carousel-product-tile">
29
+ <ProductTile productObject={productObject} />
30
+ </swiper-slide>
31
+ <swiper-slide class="carousel-product-tile">
32
+ <ProductTile productObject={productObject} />
33
+ </swiper-slide>
34
+ <swiper-slide class="carousel-product-tile">
35
+ <ProductTile productObject={productObject} />
36
+ </swiper-slide>
37
+ </swiper-container>
38
+ </div>
@@ -86,7 +86,7 @@ const niceName = (string: string, separator = "\u00A0") => {
86
86
  </div>
87
87
  )}
88
88
 
89
- { copyDisabled && (
89
+ {copyDisabled && (
90
90
  <ButtonCopy
91
91
  productNumber={String(productNumber)}
92
92
  texts={butonTexts}
@@ -94,7 +94,6 @@ const niceName = (string: string, separator = "\u00A0") => {
94
94
  client:only
95
95
  />
96
96
  )}
97
-
98
97
  </div>
99
98
 
100
99
  <div
@@ -1,6 +1,5 @@
1
1
  ---
2
2
  const { productObject, locale, index } = Astro.props;
3
- import i18next, { t } from "i18next";
4
3
  import Image from "./Image.astro"
5
4
  import ProductNumber from "./ProductNumber.astro"
6
5
 
@@ -9,7 +8,6 @@ import ProductNumber from "./ProductNumber.astro"
9
8
  { productObject &&
10
9
  (
11
10
 
12
- <div class="flex flex-wrap sm:flex-nowrap content-between w-64 md:(w-96 min-w-96) ml-1 lg:ml-1.5 relative bg-white mb-4 underline-on-hover">
13
11
  <!-- product image -->
14
12
  <div class="img--4/3 img--small">
15
13
  { productObject.photo !== null ?
@@ -46,7 +44,5 @@ import ProductNumber from "./ProductNumber.astro"
46
44
  }
47
45
  </div>
48
46
 
49
- </div>
50
-
51
47
  )}
52
48
 
@@ -15,34 +15,45 @@ const toggleVisibility = () => {
15
15
  </script>
16
16
 
17
17
  <template>
18
- <div v-if="isShow" data-pagefind-ignore class="slimbanner bg-lightBlue-500 drop-shadow-md z-2 px-4 sm:px-8 py-3 flex items-center justify-center text-xs sm:text-base leading-none text-white relative print-hidden">
19
- <span 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%]" />
20
- <span class="leading-none "><span data-text="We stand with our friends and colleagues in Ukraine. To support Ukraine in their time of need visit " />
21
- <a href="https://polo.blue/support-ukraine/" target="_blank" rel="noopener" class="underline underline-offset-2 hover:text-blue-wrc">this page</a>.
18
+ <div v-if="isShow" data-pagefind-ignore
19
+ class="slimbanner bg-lightBlue-500 drop-shadow-md z-2 px-4 sm:px-8 py-3 flex items-center justify-center text-xs sm:text-base leading-none text-white relative print-hidden">
20
+ <span
21
+ 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%]" />
22
+ <span class="leading-none "><span
23
+ data-text="We stand with our friends and colleagues in Ukraine. To support Ukraine in their time of need visit " />
24
+ <a href="https://polo.blue/support-ukraine/" target="_blank" rel="noopener"
25
+ class="underline underline-offset-2 hover:text-blue-wrc">this page</a>.
22
26
  </span>
23
27
 
24
- <button class="ml-3 text-white relative w-5 h-5" v-if="props.showCloseButton" @click="toggleVisibility()" aria-label="Toggle">
25
- <span class="close"></span>
28
+ <button class="ml-3 text-white relative w-5 h-5" v-if="props.showCloseButton" @click="toggleVisibility()"
29
+ aria-label="Toggle">
30
+ <span class="close"></span>
26
31
  </button>
27
32
  </div>
28
- <div v-else data-pagefind-ignore 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 ">
33
+ <div v-else data-pagefind-ignore
34
+ 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 ">
29
35
  <div class="tracking-widest leading-none">
30
- <span data-text="RUSSIA IS A" /> <span class="underline decoration-red-600 decoration-1 underline-offset-3" data-text="TERRORIST"/> <span data-text="STATE" />
36
+ <span data-text="RUSSIA IS A" /> <span class="underline decoration-red-600 decoration-1 underline-offset-3"
37
+ data-text="TERRORIST" /> <span data-text="STATE" />
31
38
  </div>
32
- <button class="ml-3 text-red-600 relative w-5 h-5" v-if="props.showCloseButton" @click="toggleVisibility()" aria-label="Toggle">
33
- <span class="close"></span>
39
+ <button class="ml-3 text-red-600 relative w-5 h-5" v-if="props.showCloseButton" @click="toggleVisibility()"
40
+ aria-label="Toggle">
41
+ <span class="close"></span>
34
42
  </button>
35
43
  </div>
36
44
  </template>
37
45
 
38
46
  <style lang="scss">
39
47
  .close {
40
- @apply absolute top-0 left-0 opacity-50 ;
48
+ @apply absolute top-0 left-0 opacity-50;
41
49
  }
50
+
42
51
  .close:hover {
43
52
  @apply opacity-100;
44
53
  }
45
- .close:before, .close:after {
54
+
55
+ .close:before,
56
+ .close:after {
46
57
  position: absolute;
47
58
  left: 0.5rem;
48
59
  content: ' ';
@@ -50,11 +61,11 @@ const toggleVisibility = () => {
50
61
  width: 2px;
51
62
  background-color: #fff;
52
63
  }
64
+
53
65
  .close:before {
54
66
  transform: rotate(45deg);
55
67
  }
68
+
56
69
  .close:after {
57
70
  transform: rotate(-45deg);
58
- }
59
-
60
- </style>
71
+ }</style>
@@ -1,12 +1,15 @@
1
1
  ---
2
- const { headers } = Astro.props;
2
+ const { headers } = Astro.props;
3
3
  ---
4
+
4
5
  <ul class="flex flex-col gap-4 mt-24">
5
- { headers.map(({ slug, text }) => {
6
- return (
7
- <li class="text-slate-400 hover:text-slate-800 hover:text-slate-900">
8
- #<a href={`#${slug}`}>{text}</a>
9
- </li>
10
- )
11
- }) }
12
- </ul>
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>
@@ -13,14 +13,10 @@ const props = defineProps({
13
13
  </script>
14
14
 
15
15
  <template>
16
- <div
17
- data-pagefind-ignore
18
- v-if="props.translations !== null && props.translations.uri">
19
- <a aria-label="Change language"
20
- type="button"
21
- :href="translations.uri"
22
- :title="translations.name ? translations.name : translations.title"
23
- :class="[lang === 'en' ? 'i-circle-flags:en' : '', lang === 'pl' ? 'i-circle-flags:pl' : '', 'w-5 hover:rotate--3']" />
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']" />
24
20
  </div>
25
21
  </template>
26
22
 
@@ -1,3 +1,4 @@
1
1
  <template>
2
- <span 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%]" />
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%]" />
3
4
  </template>
package/src/config.ts CHANGED
@@ -27,6 +27,7 @@ export const SIDEBAR = [
27
27
  { text: "Breadcrumbs", link: "/components/breadcrumbs" },
28
28
  { text: "Buttons", link: "/components/buttons" },
29
29
  { text: "Card", link: "/components/card" },
30
+ { text: "Carousel", link: "/components/carousel" },
30
31
  { text: "Copyright", link: "/components/copyright" },
31
32
  { text: "HandDrive", link: "/components/hand-drive" },
32
33
  { text: "Headline", link: "/components/headline" },
@@ -1,43 +1,58 @@
1
1
  ---
2
- import HeadCommon from '../components/HeadCommon.astro';
3
- import HeadSEO from '../components/HeadSEO.astro';
4
- import * as CONFIG from '../config';
2
+ import HeadCommon from "../components/HeadCommon.astro";
3
+ import HeadSEO from "../components/HeadSEO.astro";
4
+ import * as CONFIG from "../config";
5
5
  import { t, changeLanguage } from "i18next";
6
- import '../styles/main.scss';
7
- import Copyright from '../components/Copyright.astro'
6
+ import "../styles/main.scss";
7
+ import Copyright from "../components/Copyright.astro";
8
8
  const locale = "en";
9
9
  changeLanguage(locale);
10
10
  const { content = {} } = Astro.props;
11
11
  const canonicalURL = new URL(Astro.url.pathname, Astro.site).toString();
12
12
  ---
13
13
 
14
- <html dir={content.dir ?? 'ltr'} lang={content.lang ?? 'en-us'} class="initial">
15
- <head>
16
- <HeadCommon />
17
- <HeadSEO {content} canonicalURL={canonicalURL} />
18
- <title>{content.title ? `${content.title} 🚀 ${CONFIG.SITE.title}` : CONFIG.SITE.title}</title>
19
- </head>
14
+ <html dir={content.dir ?? "ltr"} lang={content.lang ?? "en-us"} class="initial">
15
+ <head>
16
+ <HeadCommon />
17
+ <HeadSEO {content} canonicalURL={canonicalURL} />
18
+ <title>
19
+ {
20
+ content.title
21
+ ? `${content.title} 🚀 ${CONFIG.SITE.title}`
22
+ : CONFIG.SITE.title
23
+ }
24
+ </title>
25
+ </head>
20
26
 
21
- <body class="bg-blue-50">
22
-
23
-
24
- <div class=" bg-white z-10 mb-11 relative">
25
- <slot />
26
- </div>
27
- <footer>
28
- <Copyright class="fixed bottom-0 z-0 w-full">
29
- <a slot="middle-item" href={`https://spoko.space`} target="_blank" rel="follow noopener" class="flex my-auto items-center mx-auto" title={`Proudly made in Poland by ${import.meta.env.COPYRIGHT_DOMAIN}`}>
30
- <div class="text-xxs md:text-xs mr-1 mt-0.5 whitespace-nowrap">createdy by</div>
31
- <img
32
- class="h-4 md:h-5 w-min"
33
- src="spoko.space.svg"
34
- alt="Modern Websites"
35
- width="126"
36
- height="23"
37
- loading="lazy"
38
- >
39
- </a>
40
- </Copyright>
41
- </footer>
42
- </body>
27
+ <body class="bg-blue-50">
28
+ <div class="bg-white z-10 mb-11 relative">
29
+ <slot />
30
+ </div>
31
+ <footer>
32
+ <Copyright class="fixed bottom-0 z-0 w-full">
33
+ <a
34
+ slot="middle-item"
35
+ href={`https://spoko.space`}
36
+ target="_blank"
37
+ rel="follow noopener"
38
+ class="flex my-auto items-center mx-auto"
39
+ title={`Proudly made in Poland by ${
40
+ import.meta.env.COPYRIGHT_DOMAIN
41
+ }`}
42
+ >
43
+ <div class="text-xxs md:text-xs mr-1 mt-0.5 whitespace-nowrap">
44
+ createdy by
45
+ </div>
46
+ <img
47
+ class="h-4 md:h-5 w-min"
48
+ src="spoko.space.svg"
49
+ alt="Modern Websites"
50
+ width="126"
51
+ height="23"
52
+ loading="lazy"
53
+ />
54
+ </a>
55
+ </Copyright>
56
+ </footer>
57
+ </body>
43
58
  </html>
@@ -1,14 +1,14 @@
1
1
  ---
2
- import { ViewTransitions } from 'astro:transitions';
3
- import HeadCommon from '../components/HeadCommon.astro';
4
- import HeadSEO from '../components/HeadSEO.astro';
5
- import Header from '../components/Header/Header.astro';
6
- import PageContent from '../components/PageContent.astro';
7
- import LeftSidebar from '../components/LeftSidebar.astro';
8
- import * as CONFIG from '../config';
2
+ import { ViewTransitions } from "astro:transitions";
3
+ import HeadCommon from "../components/HeadCommon.astro";
4
+ import HeadSEO from "../components/HeadSEO.astro";
5
+ import Header from "../components/Header/Header.astro";
6
+ import PageContent from "../components/PageContent.astro";
7
+ import LeftSidebar from "../components/LeftSidebar.astro";
8
+ import * as CONFIG from "../config";
9
9
  import { t, changeLanguage } from "i18next";
10
- import '../styles/main.scss';
11
- import Copyright from '../components/Copyright.astro'
10
+ import "../styles/main.scss";
11
+ import Copyright from "../components/Copyright.astro";
12
12
  const locale = "en";
13
13
  changeLanguage(locale);
14
14
  const { content = {} } = Astro.props;
@@ -16,45 +16,68 @@ const currentPage = Astro.url.pathname;
16
16
  const canonicalURL = new URL(Astro.url.pathname, Astro.site).toString();
17
17
  ---
18
18
 
19
- <html dir={content.dir ?? 'ltr'} lang={content.lang ?? 'en-us'} class="initial">
20
- <head>
21
- <HeadCommon />
22
- <HeadSEO {content} canonicalURL={canonicalURL} />
23
- <title>{content.title ? `${content.title} 🚀 ${CONFIG.SITE.title}` : CONFIG.SITE.title}</title>
24
- <ViewTransitions />
25
- </head>
19
+ <script>
20
+ // Swiper Element
21
+ import { register } from "swiper/element/bundle";
22
+ document.addEventListener("astro:page-load", () => {
23
+ register();
24
+ });
25
+ </script>
26
26
 
27
- <body class="bg-blue-50">
28
- <div class="sticky top-0 z-20 w-full bg-white/70">
29
- <Header currentPage={currentPage} />
30
- </div>
27
+ <html dir={content.dir ?? "ltr"} lang={content.lang ?? "en-us"} class="initial">
28
+ <head>
29
+ <HeadCommon />
30
+ <HeadSEO {content} canonicalURL={canonicalURL} />
31
+ <title>
32
+ {
33
+ content.title
34
+ ? `${content.title} 🚀 ${CONFIG.SITE.title}`
35
+ : CONFIG.SITE.title
36
+ }
37
+ </title>
38
+ <ViewTransitions />
39
+ </head>
31
40
 
32
- <div class="flex bg-white z-10 mb-11 relative">
33
- <div class="sticky top-0 flex lg:(h-screen w-64) z-50 ">
34
- <div class="mr-auto" transition:name="sidebar">
35
- <LeftSidebar currentPage={currentPage} />
36
- </div>
37
- </div>
38
- <main class="pb-4 px-4 sm:px-8 col-auto sm:(pb-32) overflow-auto w-full">
39
- <PageContent content={content} transition:name="content">
40
- <slot />
41
- </PageContent>
42
- </main>
43
- </div>
44
- <footer>
45
- <Copyright class="fixed bottom-0 z-0 w-full">
46
- <a slot="middle-item" href="https://spoko.space" target="_blank" rel="follow noopener" class="flex my-auto items-center mx-auto" title={`Proudly made in Poland by spoko.space`}>
47
- <div class="text-xxs md:text-xs mr-1 mt-0.5 whitespace-nowrap">createdy by</div>
48
- <img
49
- class="h-4 md:h-5 w-min"
50
- src="/spoko.space.svg"
51
- alt="Modern Websites"
52
- width="126"
53
- height="23"
54
- loading="lazy"
55
- >
56
- </a>
57
- </Copyright>
58
- </footer>
59
- </body>
41
+ <body class="bg-blue-50">
42
+ <div class="sticky top-0 z-20 w-full bg-white/70">
43
+ <Header currentPage={currentPage} />
44
+ </div>
45
+
46
+ <div class="flex bg-white z-10 mb-11 relative">
47
+ <div class="sticky top-0 flex lg:(h-screen w-64) z-50">
48
+ <div class="mr-auto" transition:name="sidebar">
49
+ <LeftSidebar currentPage={currentPage} />
50
+ </div>
51
+ </div>
52
+ <main class="pb-4 px-4 sm:px-8 col-auto sm:(pb-32) overflow-auto w-full">
53
+ <PageContent content={content} transition:name="content">
54
+ <slot />
55
+ </PageContent>
56
+ </main>
57
+ </div>
58
+ <footer>
59
+ <Copyright class="fixed bottom-0 z-0 w-full">
60
+ <a
61
+ slot="middle-item"
62
+ href="https://spoko.space"
63
+ target="_blank"
64
+ rel="follow noopener"
65
+ class="flex my-auto items-center mx-auto"
66
+ title={`Proudly made in Poland by spoko.space`}
67
+ >
68
+ <div class="text-xxs md:text-xs mr-1 mt-0.5 whitespace-nowrap">
69
+ createdy by
70
+ </div>
71
+ <img
72
+ class="h-4 md:h-5 w-min"
73
+ src="/spoko.space.svg"
74
+ alt="Modern Websites"
75
+ width="126"
76
+ height="23"
77
+ loading="lazy"
78
+ />
79
+ </a>
80
+ </Copyright>
81
+ </footer>
82
+ </body>
60
83
  </html>
@@ -3,6 +3,7 @@ title: "Carousel"
3
3
  layout: "../../layouts/MainLayout.astro"
4
4
  ---
5
5
  import Carousel from '../../components/Carousel.astro'
6
+ import ProductCarousel from '../../components/ProductCarousel.astro'
6
7
 
7
8
  # Carousel
8
9
 
@@ -13,8 +14,49 @@ Carousel - modern carousel based on Swiper Element (Web Component)
13
14
  </div>
14
15
 
15
16
  ```js
16
- <Carousel />
17
+ <swiper-container
18
+ class="max-w-full w-full flex overflow-hidden"
19
+ grid-rows="1"
20
+ mousewheel-force-to-axis="true"
21
+ navigation="true"
22
+ pagination-type="fraction"
23
+ scrollbar="false"
24
+ slides-per-view="auto"
25
+ space-between="0"
26
+ >
27
+ <swiper-slide class="bg-blue-50 p-12 border-1 min-w-full">A</swiper-slide>
28
+ <swiper-slide class="bg-blue-100 p-12 border-1 min-w-full">B</swiper-slide>
29
+ <swiper-slide class="bg-blue-200 p-12 border-1 min-w-full">C</swiper-slide>
30
+ <swiper-slide class="bg-blue-300 p-12 border-1 min-w-full">D</swiper-slide>
31
+ <swiper-slide class="bg-blue-400 p-12 border-1 min-w-full">A</swiper-slide>
32
+ </swiper-container>
17
33
  ```
18
34
  #
19
35
 
20
- Find the code for this page in the `src/pages/components/carousel.mdx` file.
36
+ Find the code for this page in the `src/pages/components/carousel.mdx` file.
37
+
38
+
39
+ ## Product Carousel
40
+ <div class="component-preview">
41
+ <ProductCarousel />
42
+ </div>
43
+ ```html
44
+ <div class="bg-white rounded-lg p-4 w-full">
45
+ <swiper-container
46
+ class="flex w-full max-w-full"
47
+ grid-rows="1"
48
+ mousewheel-force-to-axis="true"
49
+ navigation="false"
50
+ scrollbar="false"
51
+ slides-per-view="auto"
52
+ space-between="0"
53
+ >
54
+ <swiper-slide
55
+ class="carousel-product-tile"
56
+ >
57
+ <ProductTile productObject={productObject} />
58
+ </swiper-slide>
59
+ ...
60
+ </swiper-container>
61
+ </div>
62
+ ```
@@ -15,15 +15,27 @@ export const productObject = {
15
15
 
16
16
  ProductTile - product link component which can be used for carousels, section with related products, recently added etc.
17
17
 
18
+ It requires a container with a specific width - it's best to set it directly in the carousel's `<swiper-slide>` tag.
19
+ #
20
+
18
21
  <div class="component-preview">
19
22
  <div class="flex flex-wrap bg-white w-full p-4 pb-0">
20
23
 
21
- <ProductTile productObject={productObject} />
22
- <ProductTile productObject={productObject} />
23
- <ProductTile productObject={productObject} />
24
- <ProductTile productObject={productObject} />
25
- <ProductTile productObjec={productObject}t />
26
- <ProductTile productObject={productObject} />
24
+ <div class="flex flex-wrap sm:flex-nowrap content-between w-64 min-w-64 md:(w-96 min-w-96) ml-1 lg:ml-1.5 relative bg-white mb-4 underline-on-hover">
25
+ <ProductTile productObject={productObject} />
26
+ </div>
27
+ <div class="flex flex-wrap sm:flex-nowrap content-between w-64 min-w-64 md:(w-96 min-w-96) ml-1 lg:ml-1.5 relative bg-white mb-4 underline-on-hover">
28
+ <ProductTile productObject={productObject} />
29
+ </div>
30
+ <div class="flex flex-wrap sm:flex-nowrap content-between w-64 min-w-64 md:(w-96 min-w-96) ml-1 lg:ml-1.5 relative bg-white mb-4 underline-on-hover">
31
+ <ProductTile productObject={productObject} />
32
+ </div>
33
+ <div class="flex flex-wrap sm:flex-nowrap content-between w-64 min-w-64 md:(w-96 min-w-96) ml-1 lg:ml-1.5 relative bg-white mb-4 underline-on-hover">
34
+ <ProductTile productObject={productObject} />
35
+ </div>
36
+ <div class="flex flex-wrap sm:flex-nowrap content-between w-64 min-w-64 md:(w-96 min-w-96) ml-1 lg:ml-1.5 relative bg-white mb-4 underline-on-hover">
37
+ <ProductTile productObject={productObject} />
38
+ </div>
27
39
  </div>
28
40
  </div>
29
41
 
@@ -9,13 +9,13 @@ import SlimBanner from '../../components/SlimBanner.vue'
9
9
  SlimBanner - solidarity with Ukraine.
10
10
 
11
11
  <div class="component-preview">
12
- <SlimBanner
13
- class="w-full"
14
- client:load
15
- showCloseButton
16
- transition:name="slim-banner"
17
- transition:persist
18
- />
12
+ <SlimBanner
13
+ class="w-full"
14
+ client:load
15
+ showCloseButton
16
+ transition:name="slim-banner"
17
+ transition:persist
18
+ />
19
19
  </div>
20
20
 
21
21
  ```js
@@ -20,6 +20,7 @@ The project is still in the development phase, use at your own risk ;-)
20
20
  Although it's not required, you can create folders for new sections.
21
21
 
22
22
  To show the section on the left side navigation, add it to the navigation config file at `src/config.ts`.
23
+ #
23
24
 
24
25
  Example:
25
26
 
package/uno.config.ts CHANGED
@@ -41,7 +41,7 @@ export default defineConfig({
41
41
  ['img--small', 'w-60 sm:(w-22) xl:(w-30)'],
42
42
  ['img--medium', 'w-60'],
43
43
  ['underline-on-hover', 'relative flex w-full bg-white pb-1 dark:bg-blue-901 after:absolute after:bg-lightBlue-500 after:w-[calc(100%-1rem)] after:left-0 after:h-px after:top-[calc(100%-1px)] after:bottom-1 after:content-empty after:scale-x-0 after:transition-transform-300 after:origin-top-right hover:after:origin-top-left hover:after:scale-x-100'],
44
-
44
+ ['carousel-product-tile', 'flex flex-wrap sm:flex-nowrap content-between w-64 min-w-64 lg:(w-28.57% min-w-28.57%) 2xl:(w-24.09% min-w-24.09%) relative'],
45
45
  ['btn-primary', 'bg-lightBlue-500 border border-transparent font-medium hover:bg-lightBlue-600 inline-flex items-center justify-center shadow text-base text-white'],
46
46
  ['btn-primary-outline', 'border-lightBlue-500 border font-medium inline-flex items-center justify-center shadow text-base text-lightBlue-500 transition-all hover:(bg-lightBlue-500 text-white)'],
47
47
  ['btn-secondary', 'bg-gray-500 border border-transparent font-medium hover:bg-gray-600 inline-flex items-center justify-center shadow text-base text-white'],
@@ -1,7 +0,0 @@
1
- ---
2
- import { Icon } from "astro-icon/components";
3
-
4
- const { size } = Astro.props;
5
- ---
6
-
7
- <Icon name="noto-v1:letter-s" />
@@ -1,12 +0,0 @@
1
- ---
2
- import TableOfContents from './TableOfContents.astro';
3
- const { content } = Astro.props;
4
- const headers = content.astro?.headers || [];
5
- ---
6
-
7
- <nav aria-labelledby="grid-right">
8
- <div class="px-8">
9
- <TableOfContents headers={headers} />
10
- <pre>{JSON.stringify(content)}</pre>
11
- </div>
12
- </nav>