spoko-design-system 0.1.3 → 0.1.5

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "spoko-design-system",
3
- "version": "0.1.3",
3
+ "version": "0.1.5",
4
4
  "private": false,
5
5
  "scripts": {
6
6
  "dev": "astro dev",
@@ -28,13 +28,13 @@
28
28
  ],
29
29
  "dependencies": {
30
30
  "@algolia/client-search": "^4.22.1",
31
- "@astrojs/mdx": "^2.1.0",
31
+ "@astrojs/mdx": "^2.1.1",
32
32
  "@astrojs/node": "^7.0.4",
33
33
  "@astrojs/sitemap": "^3.0.5",
34
34
  "@astrojs/vue": "^4.0.8",
35
35
  "@docsearch/css": "^3.5.2",
36
36
  "@docsearch/react": "^3.5.2",
37
- "@iconify-json/ant-design": "^1.1.14",
37
+ "@iconify-json/ant-design": "^1.1.15",
38
38
  "@iconify-json/bi": "^1.1.23",
39
39
  "@iconify-json/bx": "^1.1.10",
40
40
  "@iconify-json/carbon": "^1.1.28",
@@ -42,20 +42,20 @@
42
42
  "@iconify-json/el": "^1.1.8",
43
43
  "@iconify-json/eos-icons": "^1.1.10",
44
44
  "@iconify-json/flowbite": "^1.1.0",
45
- "@iconify-json/fluent": "^1.1.46",
45
+ "@iconify-json/fluent": "^1.1.47",
46
46
  "@iconify-json/fluent-emoji": "1.1.18",
47
47
  "@iconify-json/icon-park-outline": "^1.1.15",
48
48
  "@iconify-json/la": "^1.1.8",
49
49
  "@iconify-json/mdi": "^1.1.64",
50
50
  "@iconify-json/noto-v1": "^1.1.11",
51
51
  "@iconify-json/octicon": "^1.1.52",
52
- "@iconify-json/ph": "^1.1.10",
53
- "@iconify-json/simple-icons": "^1.0.5",
52
+ "@iconify-json/ph": "^1.1.11",
53
+ "@iconify-json/simple-icons": "^1.1.90",
54
54
  "@iconify-json/uil": "^1.1.8",
55
- "@iconify/json": "^2.2.175",
55
+ "@iconify/json": "^2.2.178",
56
56
  "@iconify/vue": "^4.1.1",
57
- "@types/node": "^20.11.7",
58
- "@types/react": "^18.2.48",
57
+ "@types/node": "^20.11.16",
58
+ "@types/react": "^18.2.51",
59
59
  "@unocss/astro": "^0.58.4",
60
60
  "@unocss/preset-attributify": "^0.58.4",
61
61
  "@unocss/preset-typography": "^0.58.4",
@@ -64,25 +64,25 @@
64
64
  "@unocss/preset-wind": "^0.58.4",
65
65
  "@unocss/reset": "^0.58.4",
66
66
  "@vueuse/core": "^10.7.2",
67
- "astro-compress": "^2.2.8",
67
+ "astro-compress": "^2.2.9",
68
68
  "astro-i18next": "1.0.0-beta.21",
69
- "astro-icon": "^1.0.2",
69
+ "astro-icon": "^1.1.0",
70
70
  "astro-navbar": "^2.3.0",
71
71
  "astro-pagefind": "^1.4.0",
72
- "i18next": "^23.7.20",
72
+ "i18next": "^23.8.2",
73
73
  "i18next-browser-languagedetector": "^7.2.0",
74
74
  "i18next-fs-backend": "^2.3.1",
75
- "i18next-http-backend": "^2.4.2",
75
+ "i18next-http-backend": "^2.4.3",
76
76
  "i18next-vue": "^3.0.0",
77
77
  "sass": "^1.70.0",
78
+ "swiper": "^11.0.5",
78
79
  "unocss": "^0.57.7",
79
80
  "vite": "^5.0.12",
80
- "vue": "^3.4.15",
81
- "swiper": "^11.0.5"
81
+ "vue": "^3.4.15"
82
82
  },
83
83
  "devDependencies": {
84
84
  "@unocss/transformer-variant-group": "^0.58.4",
85
- "astro": "^4.2.4",
85
+ "astro": "^4.3.2",
86
86
  "unocss": "^0.58.3"
87
87
  },
88
88
  "pnpm": {
@@ -0,0 +1,41 @@
1
+
2
+ <script lang="ts" setup>
3
+ import { PropType } from 'vue';
4
+
5
+ const props = defineProps({
6
+ items: {
7
+ type: Object as PropType<String[] | null>,
8
+ default: null,
9
+ required: true,
10
+ },
11
+ caption: {
12
+ type: Object as PropType<String | null>,
13
+ default: null,
14
+ required: false,
15
+ }
16
+ })
17
+ </script>
18
+
19
+ <template>
20
+ <h2 class="font-headregular mb-2 font-medium text-lg colon-after" v-if="props.caption">{{ props.caption }}</h2>
21
+ <ul class="">
22
+ <li v-for="item in props.items" class="leading-5">
23
+ {{ item }}
24
+ </li>
25
+ </ul>
26
+ </template>
27
+
28
+
29
+ <style lang="scss" scoped>
30
+ ul {
31
+ @apply list-square pl-5;
32
+
33
+ li {
34
+ @apply relative mb-2;
35
+
36
+ &::marker {
37
+ @apply text-blue-400;
38
+ }
39
+ }
40
+ }
41
+ </style>
@@ -4,7 +4,7 @@ import type { PropType } from 'vue'
4
4
  const props = defineProps({
5
5
  as: {
6
6
  type: String as PropType<'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'p' | 'div' | 'span'>,
7
- default: null,
7
+ default: 'span',
8
8
  required: true,
9
9
  },
10
10
  textSize: {
@@ -0,0 +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>
28
+ </template>
@@ -7,7 +7,7 @@ import type { PropType } from 'vue'
7
7
 
8
8
  const props = defineProps({
9
9
  prcode: {
10
- type: Object as PropType<string[] | null>,
10
+ type: String,
11
11
  default: null,
12
12
  required: true,
13
13
  },
@@ -0,0 +1,39 @@
1
+ <script lang="ts" setup>
2
+ import type { PropType } from 'vue'
3
+ import PrCode from './PrCode.vue';
4
+
5
+ const props = defineProps({
6
+ prcodes: {
7
+ type: Object as PropType<string[] | null>,
8
+ default: null,
9
+ required: true,
10
+ },
11
+ isPdp: {
12
+ type: Boolean,
13
+ default: false,
14
+ required: false,
15
+ },
16
+ })
17
+
18
+ const codes = props.prcodes || []
19
+ const decodedCodes = codes ? codes.sort() : []
20
+
21
+ const settings = {
22
+ prcodes: decodedCodes,
23
+ }
24
+ </script>
25
+
26
+ <template>
27
+
28
+ <span
29
+ v-for="(prcode, index) in settings.prcodes"
30
+ :key="index"
31
+ class="not-last:mr-1"
32
+ >
33
+ <PrCode :prcode="prcode" v-if="!String(prcode).includes('+')" />
34
+ <span v-else >
35
+ <PrCode v-for="(splittedCode, index2) in String(prcode).split('+')" :key="index2" :prcode="splittedCode" />
36
+ </span>
37
+ </span>
38
+ </template>
39
+
@@ -0,0 +1,56 @@
1
+ <script lang="ts" setup>
2
+ import { PropType } from 'vue';
3
+
4
+ const props = defineProps({
5
+ as: {
6
+ type: String as PropType< 'th'| 'td' | 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'p' | 'div' | 'span'>,
7
+ default: 'div',
8
+ required: true,
9
+ },
10
+ text: {
11
+ type: String,
12
+ default: '',
13
+ required: true,
14
+ },
15
+ styles: {
16
+ type: String,
17
+ default: '',
18
+ required: false,
19
+ }
20
+ })
21
+ </script>
22
+
23
+ <template>
24
+ <component :is="props.as" class="font-bold detail-name w-full sm:w-50 flex">
25
+ <span class="colon-after" :class="styles && styles.length ? styles : 'mt-auto'">
26
+ {{ props.text }}
27
+ </span>
28
+ </component>
29
+ </template>
30
+
31
+
32
+ <style lang="scss">
33
+ .detail-name {
34
+ @apply overflow-hidden relative;
35
+
36
+ span {
37
+ @apply block bg-white dark:bg-blue-901 relative z-10 pr-1.5 w-full;
38
+
39
+ &:before {
40
+ // order: 2;
41
+ @apply text-gray-300 absolute select-none border-b border-gray-200 dark:border-gray-600 w-full -z-1;
42
+ height: 1em;
43
+ white-space: nowrap;
44
+ font-weight: 100;
45
+ bottom: 3px;
46
+ left: 0;
47
+ flex: 1;
48
+ content: '';
49
+ position:absolute;
50
+ }
51
+ }
52
+
53
+
54
+ }
55
+
56
+ </style>
@@ -0,0 +1,62 @@
1
+ <script setup lang="ts">
2
+ import { PropType } from "vue";
3
+ import ProductDetailName from "./ProductDetailName.vue";
4
+
5
+ interface TableItem {
6
+ slug: string,
7
+ name: string
8
+ value: unknown
9
+ }
10
+
11
+ const props = defineProps({
12
+ items: {type: Array as PropType<TableItem[]>, default: () => []},
13
+ caption: { type: String, default: null }
14
+ })
15
+
16
+ </script>
17
+
18
+ <template>
19
+ <table class="details table-auto text-left bg-white">
20
+ <caption v-if="!!$slots.caption || caption">
21
+ <slot name="caption">{{ caption }}</slot>
22
+ </caption>
23
+ <colgroup>
24
+ <col>
25
+ <col>
26
+ </colgroup>
27
+ <tbody>
28
+ <tr class="border" v-for="row, index in props.items" :key="index">
29
+ <ProductDetailName as="th" :text="row.name" />
30
+ <td>
31
+ <slot
32
+ :name="row.slug"
33
+ >
34
+ {{ row.value }}
35
+ </slot>
36
+ </td>
37
+ </tr>
38
+ </tbody>
39
+ </table>
40
+ </template>
41
+
42
+ <style lang="scss">
43
+ .details {
44
+ border: none;
45
+ box-shadow: none;
46
+
47
+ td,
48
+ tr,
49
+ th {
50
+ border: none;
51
+ @apply leading-4 text-sm;
52
+ }
53
+
54
+ th {
55
+ @apply pr-0
56
+ }
57
+
58
+ td {
59
+ @apply relative;
60
+ }
61
+ }
62
+ </style>
@@ -0,0 +1,116 @@
1
+ ---
2
+ import { t } from "i18next";
3
+ import ButtonCopy from "./ButtonCopy.vue";
4
+
5
+ const {
6
+ copyDisabled,
7
+ productNumber,
8
+ isPdp,
9
+ small,
10
+ big,
11
+ class: className,
12
+ } = Astro.props;
13
+
14
+ const butonTexts = {
15
+ copy: t("copy"),
16
+ copied: t("copied"),
17
+ };
18
+
19
+ const isLetter = (string: string) => {
20
+ return string.toLowerCase() !== string.toUpperCase();
21
+ };
22
+
23
+ const niceName = (string: string, separator = "\u00A0") => {
24
+ let word = string; //e.g. to 6Q0947106EY20 .split('+')
25
+
26
+ if (
27
+ isLetter(string[0]) === true &&
28
+ isLetter(string[1]) === false &&
29
+ string.length === 9
30
+ ) {
31
+ // mainly liquids
32
+ word = string
33
+ .replace(
34
+ /^(\w{1})(\w{3})(\w{3})(.*)$/,
35
+ `$1${separator}$2${separator}$3${separator}$4`,
36
+ )
37
+ .replace(/(^\s+|\s+$)/, "");
38
+ }
39
+
40
+ // wheels / emblems e.g. 6R0601025AK8Z8 --> 6R0 601 025 AB 8Z8 || 6C0601025DFZZ --> 6C0 601 025 D FZZ || 6R0853433ADA1 -> 6R0 853 433 A DA1
41
+ else if (string.length >= 13) {
42
+ // console.log('part number: wheels / emblems', word)
43
+ word = string
44
+ .replace(
45
+ /^(\w{3})(\w{3})(\w{3})(.*)(\w{3})$/,
46
+ `$1${separator}$2${separator}$3${separator}$4${separator}$5`,
47
+ )
48
+ .replace(/(^\s+|\s+$)/, "");
49
+ } else if (string.length > 12) {
50
+ // accessories / mats
51
+ word = string
52
+ .replace(
53
+ /^(\w{3})(\w{3})(\w{3})(\w{1})(.*)$/,
54
+ `$1${separator}$2${separator}$3${separator}$4${separator}$5`,
55
+ )
56
+ .replace(/(^\s+|\s+$)/, "");
57
+ } else {
58
+ // other parts
59
+ word = string
60
+ .replace(/(\w{3})/g, `$1${separator}`)
61
+ .replace(/(^\s+|\s+$)/, "");
62
+ }
63
+
64
+ return word.replace(" ", separator);
65
+ };
66
+ ---
67
+
68
+ {
69
+ productNumber !== null && (
70
+ <div
71
+ class={`product-number ${
72
+ big ? "text-lg" : `text-sm ${className ? className : "mt-2 sm:mt-0"}`
73
+ }`}
74
+ >
75
+ <div
76
+ class={`inline-flex leading-none relative ${small ? "w-full" : ""}`}
77
+ itemprop="identifier"
78
+ >
79
+ {isPdp ? (
80
+ <h2 id={productNumber} class="product-code">
81
+ {productNumber}
82
+ </h2>
83
+ ) : (
84
+ <div id={productNumber} class="product-code">
85
+ {productNumber}
86
+ </div>
87
+ )}
88
+
89
+ {copyDisabled && (
90
+ <ButtonCopy
91
+ productNumber={String(productNumber)}
92
+ texts={butonTexts}
93
+ tooltipClasses=""
94
+ client:only
95
+ />
96
+ )}
97
+ </div>
98
+
99
+ <div
100
+ class={`code-formatted ${small ? "tracking-wide" : "tracking-tight"}`}
101
+ >
102
+ <div class="relative inset-0" data-pagefind-ignore>
103
+ {niceName(productNumber, ".")}
104
+ </div>
105
+ <div class="absolute inset-0" data-pagefind-ignore>
106
+ {niceName(productNumber, "-")}
107
+ </div>
108
+ {isPdp ? (
109
+ <h3 class="number-secondary">{niceName(productNumber)}</h3>
110
+ ) : (
111
+ <div class="number-secondary">{niceName(productNumber)}</div>
112
+ )}
113
+ </div>
114
+ </div>
115
+ )
116
+ }
@@ -1,10 +1,12 @@
1
1
  ---
2
2
  import { t } from "i18next";
3
3
  import ButtonCopy from "./ButtonCopy.vue";
4
+ import PartNumber from "./PartNumber.vue";
4
5
 
5
6
  const {
6
7
  copyDisabled,
7
8
  productNumber,
9
+ as,
8
10
  isPdp,
9
11
  small,
10
12
  big,
@@ -63,38 +65,20 @@ const niceName = (string: string, separator = "\u00A0") => {
63
65
 
64
66
  return word.replace(" ", separator);
65
67
  };
68
+
69
+
70
+ const classes = `product-number ${big ? "text-lg" : `text-sm ${className ? className : "mt-2 sm:mt-0"}` }`
71
+
66
72
  ---
67
73
 
74
+ <!-- <PartNumber number={productNumber} as="div"></PartNumber> -->
75
+
76
+
68
77
  {
69
78
  productNumber !== null && (
70
- <div
71
- class={`product-number ${
72
- big ? "text-lg" : `text-sm ${className ? className : "mt-2 sm:mt-0"}`
73
- }`}
74
- >
75
- <div
76
- class={`inline-flex leading-none relative ${small ? "w-full" : ""}`}
77
- itemprop="identifier"
78
- >
79
- {isPdp ? (
80
- <h2 id={productNumber} class="product-code">
81
- {productNumber}
82
- </h2>
83
- ) : (
84
- <div id={productNumber} class="product-code">
85
- {productNumber}
86
- </div>
87
- )}
88
-
89
- {copyDisabled && (
90
- <ButtonCopy
91
- productNumber={String(productNumber)}
92
- texts={butonTexts}
93
- tooltipClasses=""
94
- client:only
95
- />
96
- )}
97
- </div>
79
+
80
+
81
+ <PartNumber class={`product-code ${classes}`} number={productNumber} as={isPdp ? 'h2' : 'div'} />
98
82
 
99
83
  <div
100
84
  class={`code-formatted ${small ? "tracking-wide" : "tracking-tight"}`}
@@ -105,12 +89,19 @@ const niceName = (string: string, separator = "\u00A0") => {
105
89
  <div class="absolute inset-0" data-pagefind-ignore>
106
90
  {niceName(productNumber, "-")}
107
91
  </div>
108
- {isPdp ? (
109
- <h3 class="number-secondary">{niceName(productNumber)}</h3>
110
- ) : (
111
- <div class="number-secondary">{niceName(productNumber)}</div>
112
- )}
92
+ <PartNumber class="number-secondary" number={niceName(productNumber)} as={isPdp ? 'h3' : 'div'} />
113
93
  </div>
114
- </div>
94
+
115
95
  )
116
96
  }
97
+
98
+
99
+ <!-- {!copyDisabled && ( -->
100
+ <ButtonCopy
101
+ class="top-3.5 right-0"
102
+ productNumber={String(productNumber)}
103
+ texts={butonTexts}
104
+ tooltipClasses=""
105
+ client:only
106
+ />
107
+ <!-- )} -->
@@ -36,7 +36,7 @@ import ProductNumber from "./ProductNumber.astro"
36
36
  { productObject.name }
37
37
  </a>
38
38
 
39
- <ProductNumber productNumber={productObject.number} copyDisabled={true} />
39
+ <ProductNumber productNumber={productObject.number} copyDisabled={false} />
40
40
 
41
41
  { index !== null &&
42
42
  ( <meta itemprop="position" content={String(index)} />
@@ -16,7 +16,7 @@ const toggleVisibility = () => {
16
16
 
17
17
  <template>
18
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">
19
+ class="slimbanner bg-lightBlue-500 drop-shadow-md z-2 px-4 py-3 flex items-center justify-center text-xs sm:(text-base px-8) leading-none text-white relative print-hidden">
20
20
  <span
21
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
22
  <span class="leading-none "><span
@@ -31,7 +31,7 @@ const toggleVisibility = () => {
31
31
  </button>
32
32
  </div>
33
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 ">
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 ">
35
35
  <div class="tracking-widest leading-none">
36
36
  <span data-text="RUSSIA IS A" /> <span class="underline decoration-red-600 decoration-1 underline-offset-3"
37
37
  data-text="TERRORIST" /> <span data-text="STATE" />
package/src/config.ts CHANGED
@@ -29,6 +29,8 @@ export const SIDEBAR = [
29
29
  { text: "Card", link: "/components/card/" },
30
30
  { text: "Carousel", link: "/components/carousel/" },
31
31
  { text: "Copyright", link: "/components/copyright/" },
32
+ { text: "Details List", link: "/components/details-list/" },
33
+ { text: "Features List", link: "/components/features-list/"},
32
34
  { text: "HandDrive", link: "/components/hand-drive/" },
33
35
  { text: "Headline", link: "/components/headline/" },
34
36
  { text: "Icons", link: "/components/icons/" },
@@ -44,7 +44,7 @@ const canonicalURL = new URL(Astro.url.pathname, Astro.site).toString();
44
44
  createdy by
45
45
  </div>
46
46
  <img
47
- class="h-4 md:h-5 w-min"
47
+ class="h-4 w-min md:h-5 "
48
48
  src="spoko.space.svg"
49
49
  alt="Modern Websites"
50
50
  width="126"
@@ -172,7 +172,7 @@ Rounded edges
172
172
  <Button tertiary small rounded>Tertiary</Button>
173
173
 
174
174
  <Button text medium small rounded>Text</Button>
175
- <Button tag small small rounded>Tag Name</Button>
175
+ <Button tag small rounded>Tag Name</Button>
176
176
  </div>
177
177
  </div>
178
178
 
@@ -193,7 +193,7 @@ Rounded edges
193
193
  <Button secondary small rounded>Secondary</Button>
194
194
  <Button tertiary small rounded>Tertiary</Button>
195
195
  <Button text medium small rounded>Text</Button>
196
- <Button tag small small rounded>Tag Name</Button>
196
+ <Button tag small rounded>Tag Name</Button>
197
197
  ```
198
198
 
199
199
  ## Outline button
@@ -12,7 +12,7 @@ import Image from '../../components/Image.astro'
12
12
  Card - product link component which can be used for carousels, section with related products, recently added etc.
13
13
 
14
14
  <div class="component-preview">
15
- <div class="grid grid-cols-3 gap-8 w-full" itemscope itemtype="https://schema.org/ItemList">
15
+ <div class="grid grid-cols-1 md:grid-cols-3 gap-8 w-full" itemscope itemtype="https://schema.org/ItemList">
16
16
  <Card href="https://google.com" imgAlt="Image Alt" imgSrc="https://img.freepik.com/free-photo/beautiful-green-landscape-with-plantations-trees-cloudy-sky_181624-42918.jpg?w=826&t=st=1706315168~exp=1706315768~hmac=ed7872d0924dbda4322a3d346eef282edd77db3673fc209c933b02e37c29f9ac" >
17
17
  <a href="#">
18
18
  <h5 class="mb-2 text-2xl font-bold tracking-tight text-gray-900 dark:text-white leading-none">Lorem Ipsum</h5>
@@ -70,7 +70,7 @@ Card - product link component which can be used for carousels, section with rela
70
70
  </div>
71
71
 
72
72
  ```html
73
- <div class="grid grid-cols-3 gap-8 w-full" itemscope itemtype="https://schema.org/ItemList">
73
+ <div class="grid grid-cols-1 md:grid-cols-3 gap-8 w-full" itemscope itemtype="https://schema.org/ItemList">
74
74
  <Card href="https://google.com" imgAlt="Image Alt" imgSrc="https://img.freepik.com/free-photo/beautiful-green-landscape-with-plantations-trees-cloudy-sky_181624-42918.jpg?w=826&t=st=1706315168~exp=1706315768~hmac=ed7872d0924dbda4322a3d346eef282edd77db3673fc209c933b02e37c29f9ac" >
75
75
  <a href="#">
76
76
  <h5 class="mb-2 text-2xl font-bold tracking-tight text-gray-900 dark:text-white leading-none">Lorem Ipsum</h5>
@@ -97,132 +97,96 @@ Card - product link component which can be used for carousels, section with rela
97
97
  <div class="w-fit mx-auto grid grid-cols-1 lg:grid-cols-3 md:grid-cols-2 justify-items-center justify-center gap-y-20 gap-x-14 mt-10 mb-5 ">
98
98
  <div class="w-72 bg-white shadow-md rounded-xl duration-500 hover:scale-105 hover:shadow-xl">
99
99
  <a href="#">
100
- <img src="https://picsum.photos/600/400/?random" alt="Product" class="h-80 w-72 object-cover rounded-t-xl" />
100
+ <img src="https://picsum.photos/600/500/?random" alt="Product" class="img--1/1 rounded-t-xl" />
101
101
  <div class="px-4 py-3 w-72">
102
102
  <span class="text-gray-400 mr-3 uppercase text-xs">Brand</span>
103
103
  <p class="text-lg font-bold text-black truncate block capitalize">Product Name</p>
104
104
  <div class="flex items-center">
105
- <p class="text-lg font-semibold text-black cursor-auto my-3">$149</p>
105
+ <p class="text-lg font-semibold text-black cursor-auto my-3">€149</p>
106
106
  <del>
107
- <p class="text-sm text-gray-600 cursor-auto ml-2">$199</p>
107
+ <p class="text-sm text-gray-600 cursor-auto ml-2">€199</p>
108
108
  </del>
109
- <div class="ml-auto"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20"
110
- fill="currentColor" class="bi bi-bag-plus" viewBox="0 0 16 16">
111
- <path fill-rule="evenodd"
112
- d="M8 7.5a.5.5 0 0 1 .5.5v1.5H10a.5.5 0 0 1 0 1H8.5V12a.5.5 0 0 1-1 0v-1.5H6a.5.5 0 0 1 0-1h1.5V8a.5.5 0 0 1 .5-.5z" />
113
- <path
114
- d="M8 1a2.5 2.5 0 0 1 2.5 2.5V4h-5v-.5A2.5 2.5 0 0 1 8 1zm3.5 3v-.5a3.5 3.5 0 1 0-7 0V4H1v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V4h-3.5zM2 5h12v9a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V5z" />
115
- </svg></div>
109
+ <Icon name="octicon:info-24" class="ml-auto" />
116
110
  </div>
117
111
  </div>
118
112
  </a>
119
113
  </div>
120
114
  <div class="w-72 bg-white shadow-md rounded-xl duration-500 hover:scale-105 hover:shadow-xl">
121
115
  <a href="#">
122
- <img src="https://picsum.photos/600/400/?random" alt="Product" class="h-80 w-72 object-cover rounded-t-xl" />
116
+ <img src="https://picsum.photos/600/500/?random" alt="Product" class="img--1/1 rounded-t-xl" />
123
117
  <div class="px-4 py-3 w-72">
124
118
  <span class="text-gray-400 mr-3 uppercase text-xs">Brand</span>
125
119
  <p class="text-lg font-bold text-black truncate block capitalize">Product Name</p>
126
120
  <div class="flex items-center">
127
- <p class="text-lg font-semibold text-black cursor-auto my-3">$149</p>
121
+ <p class="text-lg font-semibold text-black cursor-auto my-3">€149</p>
128
122
  <del>
129
- <p class="text-sm text-gray-600 cursor-auto ml-2">$199</p>
123
+ <p class="text-sm text-gray-600 cursor-auto ml-2">€199</p>
130
124
  </del>
131
- <div class="ml-auto"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20"
132
- fill="currentColor" class="bi bi-bag-plus" viewBox="0 0 16 16">
133
- <path fill-rule="evenodd"
134
- d="M8 7.5a.5.5 0 0 1 .5.5v1.5H10a.5.5 0 0 1 0 1H8.5V12a.5.5 0 0 1-1 0v-1.5H6a.5.5 0 0 1 0-1h1.5V8a.5.5 0 0 1 .5-.5z" />
135
- <path
136
- d="M8 1a2.5 2.5 0 0 1 2.5 2.5V4h-5v-.5A2.5 2.5 0 0 1 8 1zm3.5 3v-.5a3.5 3.5 0 1 0-7 0V4H1v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V4h-3.5zM2 5h12v9a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V5z" />
137
- </svg></div>
125
+ <Icon name="octicon:info-24" class="ml-auto" />
138
126
  </div>
139
127
  </div>
140
128
  </a>
141
129
  </div>
142
130
  <div class="w-72 bg-white shadow-md rounded-xl duration-500 hover:scale-105 hover:shadow-xl">
143
131
  <a href="#">
144
- <img src="https://picsum.photos/600/400/?random" alt="Product" class="h-80 w-72 object-cover rounded-t-xl" />
132
+ <img src="https://picsum.photos/600/500/?random" alt="Product" class="img--1/1 rounded-t-xl" />
145
133
  <div class="px-4 py-3 w-72">
146
134
  <span class="text-gray-400 mr-3 uppercase text-xs">Brand</span>
147
135
  <p class="text-lg font-bold text-black truncate block capitalize">Product Name</p>
148
136
  <div class="flex items-center">
149
- <p class="text-lg font-semibold text-black cursor-auto my-3">$149</p>
137
+ <p class="text-lg font-semibold text-black cursor-auto my-3">€149</p>
150
138
  <del>
151
- <p class="text-sm text-gray-600 cursor-auto ml-2">$199</p>
139
+ <p class="text-sm text-gray-600 cursor-auto ml-2">€199</p>
152
140
  </del>
153
- <div class="ml-auto"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20"
154
- fill="currentColor" class="bi bi-bag-plus" viewBox="0 0 16 16">
155
- <path fill-rule="evenodd"
156
- d="M8 7.5a.5.5 0 0 1 .5.5v1.5H10a.5.5 0 0 1 0 1H8.5V12a.5.5 0 0 1-1 0v-1.5H6a.5.5 0 0 1 0-1h1.5V8a.5.5 0 0 1 .5-.5z" />
157
- <path
158
- d="M8 1a2.5 2.5 0 0 1 2.5 2.5V4h-5v-.5A2.5 2.5 0 0 1 8 1zm3.5 3v-.5a3.5 3.5 0 1 0-7 0V4H1v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V4h-3.5zM2 5h12v9a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V5z" />
159
- </svg></div>
141
+ <Icon name="octicon:info-24" class="ml-auto" />
160
142
  </div>
161
143
  </div>
162
144
  </a>
163
145
  </div>
164
146
  <div class="w-72 bg-white shadow-md rounded-xl duration-500 hover:scale-105 hover:shadow-xl">
165
147
  <a href="#">
166
- <img src="https://picsum.photos/600/400/?random" alt="Product" class="h-80 w-72 object-cover rounded-t-xl" />
148
+ <img src="https://picsum.photos/600/500/?random" alt="Product" class="img--1/1 rounded-t-xl" />
167
149
  <div class="px-4 py-3 w-72">
168
150
  <span class="text-gray-400 mr-3 uppercase text-xs">Brand</span>
169
151
  <p class="text-lg font-bold text-black truncate block capitalize">Product Name</p>
170
152
  <div class="flex items-center">
171
- <p class="text-lg font-semibold text-black cursor-auto my-3">$149</p>
153
+ <p class="text-lg font-semibold text-black cursor-auto my-3">€149</p>
172
154
  <del>
173
- <p class="text-sm text-gray-600 cursor-auto ml-2">$199</p>
155
+ <p class="text-sm text-gray-600 cursor-auto ml-2">€199</p>
174
156
  </del>
175
- <div class="ml-auto"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20"
176
- fill="currentColor" class="bi bi-bag-plus" viewBox="0 0 16 16">
177
- <path fill-rule="evenodd"
178
- d="M8 7.5a.5.5 0 0 1 .5.5v1.5H10a.5.5 0 0 1 0 1H8.5V12a.5.5 0 0 1-1 0v-1.5H6a.5.5 0 0 1 0-1h1.5V8a.5.5 0 0 1 .5-.5z" />
179
- <path
180
- d="M8 1a2.5 2.5 0 0 1 2.5 2.5V4h-5v-.5A2.5 2.5 0 0 1 8 1zm3.5 3v-.5a3.5 3.5 0 1 0-7 0V4H1v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V4h-3.5zM2 5h12v9a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V5z" />
181
- </svg></div>
157
+ <Icon name="octicon:info-24" class="ml-auto" />
182
158
  </div>
183
159
  </div>
184
160
  </a>
185
161
  </div>
186
162
  <div class="w-72 bg-white shadow-md rounded-xl duration-500 hover:scale-105 hover:shadow-xl">
187
163
  <a href="#">
188
- <img src="https://picsum.photos/600/400/?random" alt="Product" class="h-80 w-72 object-cover rounded-t-xl" />
164
+ <img src="https://picsum.photos/600/500/?random" alt="Product" class="img--1/1 rounded-t-xl" />
189
165
  <div class="px-4 py-3 w-72">
190
166
  <span class="text-gray-400 mr-3 uppercase text-xs">Brand</span>
191
167
  <p class="text-lg font-bold text-black truncate block capitalize">Product Name</p>
192
168
  <div class="flex items-center">
193
- <p class="text-lg font-semibold text-black cursor-auto my-3">$149</p>
169
+ <p class="text-lg font-semibold text-black cursor-auto my-3">€149</p>
194
170
  <del>
195
- <p class="text-sm text-gray-600 cursor-auto ml-2">$199</p>
171
+ <p class="text-sm text-gray-600 cursor-auto ml-2">€199</p>
196
172
  </del>
197
- <div class="ml-auto"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20"
198
- fill="currentColor" class="bi bi-bag-plus" viewBox="0 0 16 16">
199
- <path fill-rule="evenodd"
200
- d="M8 7.5a.5.5 0 0 1 .5.5v1.5H10a.5.5 0 0 1 0 1H8.5V12a.5.5 0 0 1-1 0v-1.5H6a.5.5 0 0 1 0-1h1.5V8a.5.5 0 0 1 .5-.5z" />
201
- <path
202
- d="M8 1a2.5 2.5 0 0 1 2.5 2.5V4h-5v-.5A2.5 2.5 0 0 1 8 1zm3.5 3v-.5a3.5 3.5 0 1 0-7 0V4H1v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V4h-3.5zM2 5h12v9a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V5z" />
203
- </svg></div>
173
+ <Icon name="octicon:info-24" class="ml-auto" />
204
174
  </div>
205
175
  </div>
206
176
  </a>
207
177
  </div>
208
178
  <div class="w-72 bg-white shadow-md rounded-xl duration-500 hover:scale-105 hover:shadow-xl">
209
179
  <a href="#">
210
- <img src="https://picsum.photos/600/400/?random" alt="Product" class="h-80 w-72 object-cover rounded-t-xl" />
180
+ <img src="https://picsum.photos/600/500/?random" alt="Product" class="img--1/1 rounded-t-xl" />
211
181
  <div class="px-4 py-3 w-72">
212
182
  <span class="text-gray-400 mr-3 uppercase text-xs">Brand</span>
213
183
  <p class="text-lg font-bold text-black truncate block capitalize">Product Name</p>
214
184
  <div class="flex items-center">
215
- <p class="text-lg font-semibold text-black cursor-auto my-3">$149</p>
185
+ <p class="text-lg font-semibold text-black cursor-auto my-3">€149</p>
216
186
  <del>
217
- <p class="text-sm text-gray-600 cursor-auto ml-2">$199</p>
187
+ <p class="text-sm text-gray-600 cursor-auto ml-2">€199</p>
218
188
  </del>
219
- <div class="ml-auto"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20"
220
- fill="currentColor" class="bi bi-bag-plus" viewBox="0 0 16 16">
221
- <path fill-rule="evenodd"
222
- d="M8 7.5a.5.5 0 0 1 .5.5v1.5H10a.5.5 0 0 1 0 1H8.5V12a.5.5 0 0 1-1 0v-1.5H6a.5.5 0 0 1 0-1h1.5V8a.5.5 0 0 1 .5-.5z" />
223
- <path
224
- d="M8 1a2.5 2.5 0 0 1 2.5 2.5V4h-5v-.5A2.5 2.5 0 0 1 8 1zm3.5 3v-.5a3.5 3.5 0 1 0-7 0V4H1v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V4h-3.5zM2 5h12v9a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V5z" />
225
- </svg></div>
189
+ <Icon name="octicon:info-24" class="ml-auto" />
226
190
  </div>
227
191
  </div>
228
192
  </a>
@@ -233,22 +197,16 @@ Card - product link component which can be used for carousels, section with rela
233
197
  <div class="w-fit mx-auto grid grid-cols-1 lg:grid-cols-3 md:grid-cols-2 justify-items-center justify-center gap-y-20 gap-x-14 mt-10 mb-5 ">
234
198
  <div class="w-72 bg-white shadow-md rounded-xl duration-500 hover:scale-105 hover:shadow-xl">
235
199
  <a href="#">
236
- <img src="https://picsum.photos/600/400/?random" alt="Product" class="h-80 w-72 object-cover rounded-t-xl" />
200
+ <img src="https://picsum.photos/600/500/?random" alt="Product" class="img--1/1 rounded-t-xl" />
237
201
  <div class="px-4 py-3 w-72">
238
202
  <span class="text-gray-400 mr-3 uppercase text-xs">Brand</span>
239
203
  <p class="text-lg font-bold text-black truncate block capitalize">Product Name</p>
240
204
  <div class="flex items-center">
241
- <p class="text-lg font-semibold text-black cursor-auto my-3">$149</p>
205
+ <p class="text-lg font-semibold text-black cursor-auto my-3">€149</p>
242
206
  <del>
243
- <p class="text-sm text-gray-600 cursor-auto ml-2">$199</p>
207
+ <p class="text-sm text-gray-600 cursor-auto ml-2">€199</p>
244
208
  </del>
245
- <div class="ml-auto"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20"
246
- fill="currentColor" class="bi bi-bag-plus" viewBox="0 0 16 16">
247
- <path fill-rule="evenodd"
248
- d="M8 7.5a.5.5 0 0 1 .5.5v1.5H10a.5.5 0 0 1 0 1H8.5V12a.5.5 0 0 1-1 0v-1.5H6a.5.5 0 0 1 0-1h1.5V8a.5.5 0 0 1 .5-.5z" />
249
- <path
250
- d="M8 1a2.5 2.5 0 0 1 2.5 2.5V4h-5v-.5A2.5 2.5 0 0 1 8 1zm3.5 3v-.5a3.5 3.5 0 1 0-7 0V4H1v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V4h-3.5zM2 5h12v9a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V5z" />
251
- </svg></div>
209
+ <Icon name="octicon:info-24" class="ml-auto" />
252
210
  </div>
253
211
  </div>
254
212
  </a>
@@ -0,0 +1,108 @@
1
+ ---
2
+ title: "DetailsList"
3
+ layout: "../../layouts/MainLayout.astro"
4
+ ---
5
+
6
+ import ProductDetailsList from '../../components/ProductDetailsList.vue'
7
+ import ProductNumber from "../../components/ProductNumber.astro"
8
+ import ProductCodes from '../../components/ProductCodes.vue'
9
+
10
+ export const prcodesArray = ["PJ4", "CA2", "C4E", "2JZ"]
11
+
12
+ export const tableItems = [
13
+ {
14
+ slug: "number",
15
+ name: "Part number",
16
+ value: "6R0071609GRU",
17
+ },
18
+ {
19
+ slug: "prcodes",
20
+ name: "PR-Codes",
21
+ value: ["PJ4", "CA2", "C4E", "2JZ"],
22
+ },
23
+ {
24
+ slug: "color",
25
+ name: "Color",
26
+ value: "Black",
27
+ },
28
+ {
29
+ slug: "position",
30
+ name: "Fitting position",
31
+ value: "Front axle",
32
+ },
33
+ {
34
+ slug: "brake-disck-thicnkess",
35
+ name: "Brake disc thicknes",
36
+ value: "22 mm",
37
+ },
38
+ {
39
+ slug: "weight",
40
+ name: "Weight",
41
+ value: "5.185 kg"
42
+ }
43
+ ];
44
+
45
+ # Product Details Table
46
+
47
+ <div class="component-preview flex-wrap">
48
+ <div class="bg-white rounded-lg p-8">
49
+ <ProductDetailsList items={tableItems}>
50
+ <ProductNumber slot="number" class="py-0" big isPdp productNumber="6R0071609GRU" copyDisabled={false} />
51
+ <ProductCodes slot="prcodes" prcodes={prcodesArray} />
52
+ </ProductDetailsList>
53
+ </div>
54
+ </div>
55
+
56
+ ```ts
57
+ const tableItems = [
58
+ {
59
+ slug: "number",
60
+ name: "Part number",
61
+ value: "6R0071609GRU",
62
+ },
63
+ {
64
+ slug: "prcodes",
65
+ name: "PR-Codes",
66
+ value: ["PJ4", "CA2", "C4E"]
67
+ },
68
+ {
69
+ slug: "color",
70
+ name: "Color",
71
+ value: "Black",
72
+ },
73
+ {
74
+ slug: "position",
75
+ name: "Fitting position",
76
+ value: "Front axle",
77
+ },
78
+ {
79
+ slug: "brake-disck-thicnkess",
80
+ name: "Brake disc thicknes",
81
+ value: "22 mm",
82
+ },
83
+ {
84
+ slug: "weight",
85
+ name: "Weight",
86
+ value: "5.185 kg"
87
+ }
88
+ ];
89
+
90
+ ```
91
+ ### Astro:
92
+ ```js
93
+ <ProductDetailsList items={tableItems}>
94
+ <ProductNumber slot="number" class="py-0" big isPdp productNumber="6R0071609GRU" copyDisabled={false} />
95
+ <ProductCodes slot="prcodes" prcodes={prcodesArray} />
96
+ </ProductDetailsList>
97
+ ```
98
+ ### Vue:
99
+ ```js
100
+ <ProductDetailsList items={tableItems}>
101
+ <template #number >
102
+ <ProductNumber class="py-0" big isPdp productNumber="6R0071609GRU" copyDisabled={false} />
103
+ </template>
104
+ <template #prcodes >
105
+ <ProductCodes prcodes={prcodesArray} />
106
+ </template>
107
+ </ProductDetailsList>
108
+ ```
@@ -0,0 +1,38 @@
1
+ ---
2
+ title: "DetailsList"
3
+ layout: "../../layouts/MainLayout.astro"
4
+ ---
5
+
6
+ import FeaturesList from '../../components/FeaturesList.vue'
7
+
8
+ export const items = [
9
+ "do ad dolor exercitation dolor eu eiusmod commodo dolor aliqua deserunt aliquip reprehenderit minim. Lorem fugiat deserunt reprehenderit non velit dolore voluptate nostrud aliquip consectetur minim. Labore dolore anim excepteur sit nostrud deserunt eu occaecat.",
10
+ "cillum dolore cupidatat ad mollit excepteur quis. Non nisi consequat deserunt dolore laboris est culpa. Elit eu aute magna sunt cupidatat officia do adipisicing quis velit. Consectetur deserunt et pariatur ea laborum occaecat veniam proident elit anim dolor eu nostrud voluptate. Do laboris nisi pariatur ipsum est ad anim ex quis officia est ut.",
11
+ "dolore cupidatat ad mollit excepteur quis"
12
+ ];
13
+
14
+ # Product Details Table
15
+
16
+ <div class="component-preview flex-wrap">
17
+ <div class="bg-white rounded-lg p-8">
18
+ <p class="mb-4">Dolor amet excepteur id quis ut. Nisi incididunt occaecat est officia ea do voluptate deserunt aliqua cillum duis eiusmod. Officia veniam nisi mollit exercitation consequat ex fugiat ea veniam in culpa aliquip deserunt ea. Magna elit aliqua reprehenderit anim. Ullamco do nostrud nulla consectetur dolor fugiat adipisicing adipisicing. Reprehenderit est do culpa eu non quis. Veniam anim amet excepteur in sit et eiusmod. Id amet adipisicing amet ut eiusmod et. Tempor Lorem amet aute anim magna. Do ea aute consectetur fugiat nulla laboris pariatur ad enim anim. Dolor culpa veniam aliquip amet aute sunt excepteur consectetur sit excepteur excepteur Lorem. Ipsum esse ad aute nulla eu do incididunt eiusmod nulla sunt labore id cupidatat incididunt.</p>
19
+ <FeaturesList items={items} caption="Main features"/>
20
+ </div>
21
+ </div>
22
+
23
+ ```ts
24
+ const items = [
25
+ "do ad dolor exercitation dolor eu eiusmod commodo dolor aliqua deserunt aliquip reprehenderit minim. Lorem fugiat deserunt reprehenderit non velit dolore voluptate nostrud aliquip consectetur minim. Labore dolore anim excepteur sit nostrud deserunt eu occaecat.",
26
+ "cillum dolore cupidatat ad mollit excepteur quis. Non nisi consequat deserunt dolore laboris est culpa. Elit eu aute magna sunt cupidatat officia do adipisicing quis velit. Consectetur deserunt et pariatur ea laborum occaecat veniam proident elit anim dolor eu nostrud voluptate. Do laboris nisi pariatur ipsum est ad anim ex quis officia est ut.",
27
+ "dolore cupidatat ad mollit excepteur quis"
28
+ ];
29
+
30
+ ```
31
+ ### Astro:
32
+ ```html
33
+ <FeaturesList items={items} caption="Main features" />
34
+ ```
35
+ ### Vue:
36
+ ```html
37
+ <FeaturesList :items="items" caption="Main features" />
38
+ ```
@@ -3,7 +3,7 @@ title: "PrCode"
3
3
  layout: "../../layouts/MainLayout.astro"
4
4
  ---
5
5
  import PrCode from '../../components/PrCode.vue'
6
-
6
+ import ProductCodes from '../../components/ProductCodes.vue'
7
7
 
8
8
  # PR-Code
9
9
 
@@ -17,6 +17,15 @@ They are important when purchasing spare parts as they provide information about
17
17
 
18
18
 
19
19
  ## PR-Code
20
+ Single PR-Code.
21
+
22
+ ### import:
23
+
24
+ ```js
25
+ import PrCode from 'spoko-design-system/src/components/PrCode.vue'
26
+ ```
27
+
28
+ #
20
29
 
21
30
  <div class="component-preview">
22
31
  <div class="bg-white p-6 w-full">
@@ -30,8 +39,27 @@ They are important when purchasing spare parts as they provide information about
30
39
  <PrCode prcode="1ZJ" />
31
40
  ```
32
41
 
42
+
43
+
44
+
45
+ ## PR-Codes List
46
+ Component to display list of pr codes from array.
47
+
33
48
  ### import:
34
49
 
35
50
  ```js
36
- import PrCode from 'spoko-design-system/src/components/PrCode.vue'
51
+ import ProductCodes from 'spoko-design-system/src/components/ProductCodes.vue'
37
52
  ```
53
+
54
+ #
55
+
56
+ <div class="component-preview">
57
+ <div class="bg-white p-6 w-full">
58
+ <ProductCodes prcodes={["2JP", "1ZJ"]} />
59
+ </div>
60
+ </div>
61
+
62
+ ```js
63
+ <ProductCodes prcodes={["2JP", "1ZJ"]} />
64
+ ```
65
+
@@ -4,7 +4,7 @@ layout: "../../layouts/MainLayout.astro"
4
4
 
5
5
  ---
6
6
 
7
- import MainTable from '../../components/MainTable.vue'
7
+ import Table from '../../components/Table.vue'
8
8
  export const tableData = [
9
9
  {
10
10
  id: 1,
@@ -44,7 +44,7 @@ export const tableDataSecondary = [
44
44
  Simple table based on JSON data object.
45
45
 
46
46
  <div class="component-preview">
47
- <MainTable data={tableData}></MainTable>
47
+ <Table data={tableData}></Table>
48
48
  </div>
49
49
 
50
50
  ## Code
@@ -72,10 +72,10 @@ const tableData = [
72
72
 
73
73
  ```html
74
74
  <!-- Astro -->
75
- <MainTable data={tableData} />
75
+ <Table data={tableData} />
76
76
 
77
77
  <!-- Vue -->
78
- <MainTable :data="tableData" />
78
+ <Table :data="tableData" />
79
79
  ```
80
80
 
81
81
 
@@ -83,7 +83,7 @@ const tableData = [
83
83
  # Table
84
84
 
85
85
  <div class="component-preview">
86
- <MainTable data={tableDataSecondary} />
86
+ <Table data={tableDataSecondary} />
87
87
  </div>
88
88
 
89
89
  ## Code
@@ -105,5 +105,5 @@ const tableDataSecondary = [
105
105
  ];
106
106
 
107
107
 
108
- <MainTable data={tableDataSecondary} />
108
+ <Table data={tableDataSecondary} />
109
109
  ```
@@ -49,7 +49,7 @@ const navItems = [
49
49
  </Button>
50
50
  </Jumbatron>
51
51
  <nav>
52
- <ul class="px-4 flex-col flex flex-wrap md:flex-nowrap gap-4 max-w-5xl mx-auto text-left mt-12 md:(px-0 flex-row) ">
52
+ <div class="px-4 flex-col flex flex-wrap md:flex-nowrap gap-4 max-w-5xl mx-auto text-left mt-12 md:(px-0 flex-row) ">
53
53
  {
54
54
  navItems.map(({ title, description, url, icon }) => (
55
55
  <a
@@ -65,7 +65,7 @@ const navItems = [
65
65
  </a>
66
66
  ))
67
67
  }
68
- </ul>
68
+ </div>
69
69
  </nav>
70
70
  </div>
71
71
  </Layout>
@@ -20,7 +20,7 @@ Common patterns for building interfaces.
20
20
 
21
21
  ### Code
22
22
 
23
- ```ts
23
+ ```html
24
24
  <Container class="bg-white">content</Container>
25
25
  ```
26
26
 
@@ -33,7 +33,7 @@ Common patterns for building interfaces.
33
33
 
34
34
  ### Code
35
35
 
36
- ```ts
36
+ ```html
37
37
  <Container class="bg-white" isFullWidth>content</Container>
38
38
  ```
39
39
 
@@ -50,7 +50,7 @@ Common patterns for building interfaces.
50
50
 
51
51
  ### Code
52
52
 
53
- ```ts
53
+ ```html
54
54
  <Header>
55
55
  <div slot="logo" class="flex-shrink-0 flex items-center h-8">
56
56
  <div class="bg-gray">LOGO</div>
@@ -64,6 +64,7 @@
64
64
  font-display: swap;
65
65
  }
66
66
 
67
+ // for some content which don't need to index in Google
67
68
  [data-text]:before {
68
69
  content: attr(data-text);
69
70
  }
@@ -23,7 +23,7 @@
23
23
  font-size: 13pt;
24
24
  }
25
25
 
26
- ul {
26
+ &>ul {
27
27
  @apply list-disc pl-5
28
28
  }
29
29
  }
package/uno.config.ts CHANGED
@@ -38,11 +38,11 @@ export default defineConfig({
38
38
  ['img--2/3', 'aspect-[2/3] relative object-cover bg-gray-100 h-auto max-w-full'],
39
39
  ['img--3/1', 'aspect-[3/1] relative object-cover bg-gray-100 h-auto max-w-full'],
40
40
  ['img--16/9', 'aspect-video relative object-cover bg-gray-100 h-auto max-w-full'],
41
- ['img--small', 'w-60 sm:(w-22) xl:(w-30)'],
42
- ['img--medium', 'w-60'],
41
+ ['img--small', 'h-full w-60 sm:(w-22) xl:(w-30)'],
42
+ ['img--medium', 'h-full 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
- ['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'],
45
+ ['btn-primary', 'bg-lightBlue-400 border border-transparent font-medium hover:bg-lightBlue-500 inline-flex items-center justify-center shadow text-base text-blue-700'],
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'],
48
48
  ['btn-secondary-outline', 'border-gray-500 border text-gray-500 font-medium inline-flex items-center justify-center shadow text-base hover:(text-white bg-gray-500)'],
@@ -53,7 +53,7 @@ export default defineConfig({
53
53
  ['btn-normal', 'md:px-10 md:py-2 md:text-lg px-8 py-3 whitespace-nowrap'],
54
54
  ['btn-sm', 'px-6 py-2 text-sm whitespace-nowrap '],
55
55
  ['btn-xs', 'px-4 py-1 text-sm whitespace-nowrap '],
56
- ['product-number','font-mono content-center flex flex-wrap flex-col content-start pr-5 bg-white'],
56
+ ['product-number','font-novamono leading-none content-center flex flex-wrap flex-col content-start pr-5 bg-white'],
57
57
  ['main','text-gray-700 dark:text-gray-200 dark:bg-blue-700 pt-24 sm:pt-14 relative'],
58
58
  ['nav','bg-white dark:bg-black absolute sm:fixed w-full top-0 z-40 sm:z-30 max-w-screen'],
59
59
  ['cat-menu','fixed bottom-[-4px] w-full z-10 border-t-1 border-gray-300 bg-white dark:bg-blue-900 text-center sm:(static z-auto border-t-none) sm:min-h-32'],
@@ -91,8 +91,8 @@ export default defineConfig({
91
91
  ['cat-link','whitespace-nowrap cursor-pointer text-blue-901 dark:text-white hover:text-lightBlue-400 font-light uppercase py-2 md:py-0'],
92
92
  ['plp-name','flex items-center leading-none font-headregular cursor-pointer sm:pr-6 md:pr-12'],
93
93
  ['plp-replacements','col-span-3 md:col-span-1 md:col-start-2 text-xs mt-3 md:mt-4'],
94
- ['product-code','text-blue-500 dark:text-lightBlue-500 mr-1 leading-none tracking-wide select-all'],
95
- ['code-formatted','leading-none mt-0 relative text-xs'],
94
+ ['product-code','text-blue-500 dark:text-lightBlue-500 mr-1 leading-none tracking-wide select-all '],
95
+ ['code-formatted','font-novamono leading-none mt-0 relative text-xs'],
96
96
  ['btn-copy', 'leading-none opacity-10 hover:opacity-80 ml-auto w-6 h-6 -right-7 sm:(h-4 w-4 -right-5) absolute'],
97
97
  ['btn-copy-text','shadow-sm py-0.5 px-1 bg-gray-100 -ml-1 -mt-4 text-xxs whitespace-nowrap'],
98
98
  ['plp-icons','absolute top-0 -right-2 md:(top-0.5 right-0) w-12 bottom-auto flex justify-end text-sm'],
File without changes