spoko-design-system 0.5.6 → 0.5.7

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 (170) hide show
  1. package/.astro/data-store.json +1 -1
  2. package/.astro/settings.json +4 -4
  3. package/.github/dependabot.yml +11 -11
  4. package/.github/todo.yml +3 -3
  5. package/.github/workflows/deploy.yml +39 -39
  6. package/.stackblitzrc +5 -5
  7. package/.vscode/extensions.json +5 -5
  8. package/.vscode/launch.json +11 -11
  9. package/.vscode/settings.json +5 -5
  10. package/LICENSE +21 -21
  11. package/README.md +114 -114
  12. package/astro-i18next.config.mjs +17 -17
  13. package/astro-i18next.config.ts +10 -10
  14. package/astro.config.mjs +86 -86
  15. package/dev-dist/sw.js +91 -91
  16. package/dev-dist/workbox-c676b6d3.js +3391 -3391
  17. package/icon.config.ts +278 -278
  18. package/index.ts +65 -65
  19. package/package.json +2 -2
  20. package/public/fonts/lg.svg +53 -53
  21. package/public/fonts/vwhead-bold-demo.html +549 -549
  22. package/public/fonts/vwhead-regular-demo.html +549 -549
  23. package/public/fonts/vwtext-bold-demo.html +549 -549
  24. package/public/fonts/vwtext-regular-demo.html +549 -549
  25. package/public/github.svg +3 -3
  26. package/public/grid_dot.svg +4 -4
  27. package/public/linkedin.svg +44 -44
  28. package/public/locales/en/translation.json +8 -8
  29. package/public/locales/pl/translation.json +8 -8
  30. package/public/make-scrollable-code-focusable.js +3 -3
  31. package/public/pagefind.yml +3 -3
  32. package/public/polo.blue.svg +29 -29
  33. package/public/spoko.space.svg +71 -71
  34. package/public/twitter.svg +46 -46
  35. package/renovate.json +6 -6
  36. package/sandbox.config.json +11 -11
  37. package/src/MyComponent.astro +8 -8
  38. package/src/components/Badge.vue +19 -19
  39. package/src/components/Badges.vue +21 -21
  40. package/src/components/Breadcrumbs.vue +107 -107
  41. package/src/components/Button.vue +101 -101
  42. package/src/components/ButtonCopy.astro +183 -183
  43. package/src/components/ButtonCopy.vue +36 -36
  44. package/src/components/Card.astro +27 -27
  45. package/src/components/Carousel.astro +26 -26
  46. package/src/components/Category/CategoriesCarousel.astro +101 -101
  47. package/src/components/Category/CategoryDetails.astro +169 -169
  48. package/src/components/Category/CategorySidebarToggler.vue +9 -9
  49. package/src/components/Category/CategoryTile.astro +38 -38
  50. package/src/components/Category/CategoryViewToggler.astro +89 -89
  51. package/src/components/Category/SubCategoryLink.vue +19 -19
  52. package/src/components/Copyright.astro +12 -12
  53. package/src/components/Date.astro +7 -7
  54. package/src/components/Faq.astro +33 -33
  55. package/src/components/FaqItem.astro +80 -80
  56. package/src/components/FeaturesList.vue +41 -41
  57. package/src/components/FuckRussia.vue +62 -62
  58. package/src/components/HandDrive.astro +29 -29
  59. package/src/components/Header/Header.astro +210 -210
  60. package/src/components/Header/SkipToContent.astro +1 -1
  61. package/src/components/Headline.vue +48 -48
  62. package/src/components/Image.astro +30 -30
  63. package/src/components/Input.astro +2 -2
  64. package/src/components/LeftSidebar.astro +53 -53
  65. package/src/components/MainColors.vue +22 -22
  66. package/src/components/MainInput.vue +15 -15
  67. package/src/components/Modal.astro +27 -27
  68. package/src/components/PageContent.astro +5 -5
  69. package/src/components/PartNumber.vue +27 -27
  70. package/src/components/Post/PostCategories.astro +37 -37
  71. package/src/components/Post/PostCategories.vue +38 -38
  72. package/src/components/PostHeader.astro +103 -103
  73. package/src/components/PrCode.vue +141 -141
  74. package/src/components/Product/ProductButton.vue +18 -18
  75. package/src/components/Product/ProductCarousel.astro +35 -35
  76. package/src/components/Product/ProductCodes.vue +174 -174
  77. package/src/components/Product/ProductEngineType.vue +42 -42
  78. package/src/components/Product/ProductImage.astro +40 -40
  79. package/src/components/Product/ProductLink.astro +101 -101
  80. package/src/components/Product/ProductLink.vue +59 -59
  81. package/src/components/Product/ProductLinkInfo.astro +37 -37
  82. package/src/components/Product/ProductNumber.astro +60 -60
  83. package/src/components/ProductCarousel.astro +38 -38
  84. package/src/components/ProductCodes.vue +39 -39
  85. package/src/components/ProductDetailName.vue +52 -52
  86. package/src/components/ProductDetailsList.vue +65 -65
  87. package/src/components/ProductTile.astro +48 -48
  88. package/src/components/Quote.vue +23 -23
  89. package/src/components/ReloadPrompt.astro +50 -50
  90. package/src/components/SlimBanner.vue +72 -72
  91. package/src/components/Table.vue +32 -32
  92. package/src/components/TableOfContents.astro +15 -15
  93. package/src/components/Translations.vue +23 -23
  94. package/src/components/flags/FlagPL.vue +3 -3
  95. package/src/components/flags/FlagUA.vue +2 -2
  96. package/src/components/layout/Container.astro +7 -7
  97. package/src/components/layout/Header.astro +80 -80
  98. package/src/config.ts +56 -56
  99. package/src/design.config.ts +98 -98
  100. package/src/env.d.ts +6 -6
  101. package/src/layouts/Layout.astro +61 -61
  102. package/src/layouts/MainLayout.astro +81 -81
  103. package/src/layouts/partials/FooterCommon.astro +4 -4
  104. package/src/layouts/partials/HeadCommon.astro +44 -44
  105. package/src/layouts/partials/HeadSEO.astro +41 -41
  106. package/src/pages/components/badges.mdx +57 -57
  107. package/src/pages/components/breadcrumbs.mdx +139 -139
  108. package/src/pages/components/buttons.mdx +360 -360
  109. package/src/pages/components/card.mdx +294 -294
  110. package/src/pages/components/carousel.mdx +62 -62
  111. package/src/pages/components/copyright.mdx +42 -42
  112. package/src/pages/components/details-list.mdx +115 -115
  113. package/src/pages/components/features-list.mdx +37 -37
  114. package/src/pages/components/flags.mdx +49 -49
  115. package/src/pages/components/fuck-russia.mdx +39 -39
  116. package/src/pages/components/hand-drive.mdx +38 -38
  117. package/src/pages/components/headline.mdx +152 -152
  118. package/src/pages/components/icons.astro +135 -135
  119. package/src/pages/components/image.mdx +513 -513
  120. package/src/pages/components/input.mdx +84 -47
  121. package/src/pages/components/jumbotron.mdx +359 -359
  122. package/src/pages/components/modal.mdx +64 -64
  123. package/src/pages/components/post-header.mdx +60 -60
  124. package/src/pages/components/pr-code.mdx +65 -65
  125. package/src/pages/components/product-number.mdx +58 -58
  126. package/src/pages/components/product-tile.mdx +51 -51
  127. package/src/pages/components/quote.mdx +33 -33
  128. package/src/pages/components/slimbanner.mdx +35 -35
  129. package/src/pages/components/table.mdx +108 -108
  130. package/src/pages/core/colors.mdx +10 -10
  131. package/src/pages/core/grid.mdx +89 -89
  132. package/src/pages/core/introduction.mdx +77 -77
  133. package/src/pages/core/shadows.astro +20 -20
  134. package/src/pages/core/typography.astro +49 -49
  135. package/src/pages/index.astro +130 -130
  136. package/src/pages/patterns/introduction.mdx +60 -60
  137. package/src/pwa.ts +12 -12
  138. package/src/styles/_variables.scss +70 -70
  139. package/src/styles/base/base.css +184 -184
  140. package/src/styles/base/grid.css +92 -92
  141. package/src/styles/base/typography.css +70 -70
  142. package/src/styles/content.css +73 -73
  143. package/src/styles/main.css +7 -7
  144. package/src/types/Product.ts +31 -31
  145. package/src/types/astro.d.ts +3 -3
  146. package/src/utils/product/getPriceFormatted.ts +15 -15
  147. package/src/utils/product/getProductChecklist.ts +17 -17
  148. package/src/utils/product/useFormatProductNumber.ts +41 -41
  149. package/src/utils/seo/getShorterDescription.ts +14 -14
  150. package/src/utils/text/formatDate.ts +5 -5
  151. package/src/utils/text/formatLocaleNumber.ts +6 -6
  152. package/src/utils/text/formatPad.ts +12 -12
  153. package/src/utils/text/getNumberFormatted.ts +33 -33
  154. package/src/utils/text/getTranslatedLink.ts +5 -5
  155. package/src/utils/text.ts +19 -19
  156. package/tailwind.config.cjs +8 -8
  157. package/tsconfig.json +28 -28
  158. package/uno-config/index.ts +61 -61
  159. package/uno-config/theme/breakpoints.ts +9 -9
  160. package/uno-config/theme/colors.ts +64 -64
  161. package/uno-config/theme/dimensions.ts +17 -17
  162. package/uno-config/theme/effects.ts +14 -14
  163. package/uno-config/theme/grid.ts +10 -10
  164. package/uno-config/theme/index.ts +28 -28
  165. package/uno-config/theme/shortcuts/buttons.ts +53 -53
  166. package/uno-config/theme/shortcuts/components.ts +92 -92
  167. package/uno-config/theme/shortcuts/index.ts +18 -18
  168. package/uno-config/theme/shortcuts/layout.ts +64 -64
  169. package/uno-config/theme/typography.ts +29 -29
  170. package/uno.config.ts +2 -2
@@ -1,107 +1,107 @@
1
- <script setup lang="ts">
2
-
3
- export interface Breadcrumb {
4
- name: string,
5
- path: string
6
- }
7
-
8
- import type { PropType } from 'vue'
9
-
10
- const props = defineProps({
11
- showBack: {
12
- type: Boolean,
13
- required: false,
14
- },
15
- textBack: {
16
- type: String,
17
- required: false,
18
- default: 'Back'
19
- },
20
- showHome: {
21
- type: Boolean,
22
- required: false,
23
- },
24
- breadcrumbs: {
25
- type: Object as PropType<Breadcrumb[]>,
26
- required: true
27
- },
28
- productNumber: {
29
- type: String,
30
- required: false,
31
- default: null
32
- }
33
- })
34
-
35
- const isLast = (index: Number) => {
36
- return index === props.breadcrumbs.length - 1
37
- }
38
- </script>
39
-
40
- <template>
41
- <nav>
42
- <ul class="breadcrumbs flex items-center p-0 leading-none ">
43
- <li v-if="props.showBack" class="breadcrumb-item flex">
44
- <button
45
- class="breadcrumb-link flex items-center px-3 sm:px-0 py-4.25 sm:py-1 hover:text-accent-light whitespace-nowrap my-auto"
46
- :title="props.textBack" onclick="history.back()">
47
- <span class="block px-3" i-bx-bx-arrow-back />
48
- </button>
49
- </li>
50
- </ul>
51
- <ul class="breadcrumbs flex items-center p-0 overflow-x-auto overflow-y-hidden sm:mr-12 leading-none " itemscope
52
- itemtype="https://schema.org/BreadcrumbList">
53
- <li v-if="props.showHome" class="breadcrumb-item flex">
54
- <a href="/"
55
- class="breadcrumb-link flex items-center px-3 sm:px-0 py-4.25 sm:py-1 hover:text-brand-secondary whitespace-nowrap translate-y-0 text-sm my-auto px-3"
56
- :title="textBack" itemprop="item" i-carbon-home>
57
- </a>
58
- <meta itemprop="position" content="1">
59
- </li>
60
- <li v-for="(crumb, index) in breadcrumbs" :key="index" class="breadcrumb-item flex" itemprop="itemListElement"
61
- itemscope itemtype="https://schema.org/ListItem">
62
- <a v-if="!isLast(index)" :href="crumb.path" class="breadcrumb-link whitespace-nowrap py-4.25 sm:py-1 px-1"
63
- itemprop="item" :title="`Polo 6R ${crumb.name}`">
64
- <strong class="font-normal" itemprop="name">{{ crumb.name }}</strong>
65
- </a>
66
- <a v-else :href="crumb.path"
67
- class="breadcrumb-link breadcrumb-link--disabled whitespace-nowrap pointer-events-none py-4.25 sm:py-1 px-1"
68
- :title="`Polo 6R ${crumb.name} ${productNumber}`">
69
- <strong class="font-normal" itemprop="name" v-html="crumb.name" /> <b>{{ productNumber }}</b>
70
- </a>
71
- <meta itemprop="position" :content="String(props.showHome ? index + 2 : index + 1)">
72
- </li>
73
- </ul>
74
- </nav>
75
- </template>
76
-
77
- <style scoped>.breadcrumbs {
78
- list-style: none;
79
- font-size: 0.875rem;
80
- }
81
-
82
- .breadcrumb-item + .breadcrumb-item::before {
83
- @apply py-4.25 sm:py-1 px-1;
84
- display: inline-block;
85
- padding-right: .5rem;
86
- color: #bdbdbd;
87
- content: "/";
88
- }
89
-
90
- .breadcrumb-item b {
91
- @apply hidden sm:inline font-normal;
92
- }
93
-
94
- .breadcrumb-link {
95
- border: 0;
96
- cursor: pointer;
97
- }
98
-
99
- .breadcrumb-link--disabled {
100
- cursor: default;
101
- }
102
-
103
- .breadcrumb-link--disabled:hover {
104
- color: inherit;
105
- }
106
-
107
- </style>
1
+ <script setup lang="ts">
2
+
3
+ export interface Breadcrumb {
4
+ name: string,
5
+ path: string
6
+ }
7
+
8
+ import type { PropType } from 'vue'
9
+
10
+ const props = defineProps({
11
+ showBack: {
12
+ type: Boolean,
13
+ required: false,
14
+ },
15
+ textBack: {
16
+ type: String,
17
+ required: false,
18
+ default: 'Back'
19
+ },
20
+ showHome: {
21
+ type: Boolean,
22
+ required: false,
23
+ },
24
+ breadcrumbs: {
25
+ type: Object as PropType<Breadcrumb[]>,
26
+ required: true
27
+ },
28
+ productNumber: {
29
+ type: String,
30
+ required: false,
31
+ default: null
32
+ }
33
+ })
34
+
35
+ const isLast = (index: Number) => {
36
+ return index === props.breadcrumbs.length - 1
37
+ }
38
+ </script>
39
+
40
+ <template>
41
+ <nav>
42
+ <ul class="breadcrumbs flex items-center p-0 leading-none ">
43
+ <li v-if="props.showBack" class="breadcrumb-item flex">
44
+ <button
45
+ class="breadcrumb-link flex items-center px-3 sm:px-0 py-4.25 sm:py-1 hover:text-accent-light whitespace-nowrap my-auto"
46
+ :title="props.textBack" onclick="history.back()">
47
+ <span class="block px-3" i-bx-bx-arrow-back />
48
+ </button>
49
+ </li>
50
+ </ul>
51
+ <ul class="breadcrumbs flex items-center p-0 overflow-x-auto overflow-y-hidden sm:mr-12 leading-none " itemscope
52
+ itemtype="https://schema.org/BreadcrumbList">
53
+ <li v-if="props.showHome" class="breadcrumb-item flex">
54
+ <a href="/"
55
+ class="breadcrumb-link flex items-center px-3 sm:px-0 py-4.25 sm:py-1 hover:text-brand-secondary whitespace-nowrap translate-y-0 text-sm my-auto px-3"
56
+ :title="textBack" itemprop="item" i-carbon-home>
57
+ </a>
58
+ <meta itemprop="position" content="1">
59
+ </li>
60
+ <li v-for="(crumb, index) in breadcrumbs" :key="index" class="breadcrumb-item flex" itemprop="itemListElement"
61
+ itemscope itemtype="https://schema.org/ListItem">
62
+ <a v-if="!isLast(index)" :href="crumb.path" class="breadcrumb-link whitespace-nowrap py-4.25 sm:py-1 px-1"
63
+ itemprop="item" :title="`Polo 6R ${crumb.name}`">
64
+ <strong class="font-normal" itemprop="name">{{ crumb.name }}</strong>
65
+ </a>
66
+ <a v-else :href="crumb.path"
67
+ class="breadcrumb-link breadcrumb-link--disabled whitespace-nowrap pointer-events-none py-4.25 sm:py-1 px-1"
68
+ :title="`Polo 6R ${crumb.name} ${productNumber}`">
69
+ <strong class="font-normal" itemprop="name" v-html="crumb.name" /> <b>{{ productNumber }}</b>
70
+ </a>
71
+ <meta itemprop="position" :content="String(props.showHome ? index + 2 : index + 1)">
72
+ </li>
73
+ </ul>
74
+ </nav>
75
+ </template>
76
+
77
+ <style scoped>.breadcrumbs {
78
+ list-style: none;
79
+ font-size: 0.875rem;
80
+ }
81
+
82
+ .breadcrumb-item + .breadcrumb-item::before {
83
+ @apply py-4.25 sm:py-1 px-1;
84
+ display: inline-block;
85
+ padding-right: .5rem;
86
+ color: #bdbdbd;
87
+ content: "/";
88
+ }
89
+
90
+ .breadcrumb-item b {
91
+ @apply hidden sm:inline font-normal;
92
+ }
93
+
94
+ .breadcrumb-link {
95
+ border: 0;
96
+ cursor: pointer;
97
+ }
98
+
99
+ .breadcrumb-link--disabled {
100
+ cursor: default;
101
+ }
102
+
103
+ .breadcrumb-link--disabled:hover {
104
+ color: inherit;
105
+ }
106
+
107
+ </style>
@@ -1,102 +1,102 @@
1
- <script setup lang="ts">
2
- import { useAttrs } from 'vue'
3
-
4
- interface ButtonProps {
5
- href?: string;
6
- title?: string;
7
- primary?: boolean;
8
- primaryOutline?: boolean;
9
- secondary?: boolean;
10
- secondaryOutline?: boolean;
11
- tertiary?: boolean;
12
- tertiaryOutline?: boolean;
13
- text?: boolean;
14
- tag?: boolean;
15
- small?: boolean;
16
- medium?: boolean;
17
- rounded?: boolean;
18
- whiteHover?: boolean;
19
- lightHover?: boolean;
20
- mediumHover?: boolean;
21
- darkHover?: boolean;
22
- circle?: boolean;
23
- [key: string]: any; // To allow additional props
24
- }
25
-
26
- const props = defineProps<ButtonProps>();
27
-
28
- // Check if we should add a default mediumHover for tertiary
29
- const shouldAddDefaultMediumHover = props.tertiary || props.tertiaryOutline &&
30
- !props.whiteHover &&
31
- !props.lightHover &&
32
- !props.mediumHover &&
33
- !props.darkHover;
34
-
35
- const tag = props.href && props.href.length ? 'a' : 'button'
36
- const classes = {
37
- "btn-primary": props.primary,
38
- "btn-primary-outline": props.primaryOutline,
39
- "btn-secondary": props.secondary,
40
- "btn-secondary-outline": props.secondaryOutline,
41
- "btn-tertiary": props.tertiary,
42
- "btn-tertiary-outline": props.tertiaryOutline,
43
- "btn-text": props.text,
44
- "btn-tag": props.tag,
45
- "btn-sm": props.medium,
46
- "btn-xs": props.small,
47
- "btn-normal": !props.small && !props.medium,
48
- "rounded-full": props.rounded,
49
- "btn-circle": props.circle,
50
- "btn-white-hover": props.whiteHover,
51
- "btn-light-hover": props.lightHover,
52
- "btn-medium-hover": props.mediumHover || shouldAddDefaultMediumHover,
53
- "btn-dark-hover": props.darkHover
54
- };
55
-
56
-
57
- const attrs = useAttrs();
58
- </script>
59
-
60
- <template>
61
- <component
62
- :is="tag"
63
- :class="classes"
64
- v-bind="attrs"
65
- :href="props.href"
66
- :title="props.title ? props.title : null"
67
- >
68
- <slot></slot>
69
- </component>
70
- </template>
71
-
72
- <style>
73
- .btn-primary,
74
- .btn-secondary {
75
- svg {
76
- color: #fff;
77
- }
78
- }
79
-
80
- .btn-tertiary {
81
- svg {
82
- color: var(--primary);
83
- }
84
- }
85
-
86
- /* Circle button styles */
87
- .btn-circle.btn-normal {
88
- @apply w-12;
89
- }
90
-
91
- .btn-circle.btn-sm {
92
- @apply w-9.5;
93
- }
94
-
95
- .btn-circle.btn-xs {
96
- @apply w-7;
97
- }
98
-
99
- .btn-circle svg {
100
- margin: 0;
101
- }
1
+ <script setup lang="ts">
2
+ import { useAttrs } from 'vue'
3
+
4
+ interface ButtonProps {
5
+ href?: string;
6
+ title?: string;
7
+ primary?: boolean;
8
+ primaryOutline?: boolean;
9
+ secondary?: boolean;
10
+ secondaryOutline?: boolean;
11
+ tertiary?: boolean;
12
+ tertiaryOutline?: boolean;
13
+ text?: boolean;
14
+ tag?: boolean;
15
+ small?: boolean;
16
+ medium?: boolean;
17
+ rounded?: boolean;
18
+ whiteHover?: boolean;
19
+ lightHover?: boolean;
20
+ mediumHover?: boolean;
21
+ darkHover?: boolean;
22
+ circle?: boolean;
23
+ [key: string]: any; // To allow additional props
24
+ }
25
+
26
+ const props = defineProps<ButtonProps>();
27
+
28
+ // Check if we should add a default mediumHover for tertiary
29
+ const shouldAddDefaultMediumHover = props.tertiary || props.tertiaryOutline &&
30
+ !props.whiteHover &&
31
+ !props.lightHover &&
32
+ !props.mediumHover &&
33
+ !props.darkHover;
34
+
35
+ const tag = props.href && props.href.length ? 'a' : 'button'
36
+ const classes = {
37
+ "btn-primary": props.primary,
38
+ "btn-primary-outline": props.primaryOutline,
39
+ "btn-secondary": props.secondary,
40
+ "btn-secondary-outline": props.secondaryOutline,
41
+ "btn-tertiary": props.tertiary,
42
+ "btn-tertiary-outline": props.tertiaryOutline,
43
+ "btn-text": props.text,
44
+ "btn-tag": props.tag,
45
+ "btn-sm": props.medium,
46
+ "btn-xs": props.small,
47
+ "btn-normal": !props.small && !props.medium,
48
+ "rounded-full": props.rounded,
49
+ "btn-circle": props.circle,
50
+ "btn-white-hover": props.whiteHover,
51
+ "btn-light-hover": props.lightHover,
52
+ "btn-medium-hover": props.mediumHover || shouldAddDefaultMediumHover,
53
+ "btn-dark-hover": props.darkHover
54
+ };
55
+
56
+
57
+ const attrs = useAttrs();
58
+ </script>
59
+
60
+ <template>
61
+ <component
62
+ :is="tag"
63
+ :class="classes"
64
+ v-bind="attrs"
65
+ :href="props.href"
66
+ :title="props.title ? props.title : null"
67
+ >
68
+ <slot></slot>
69
+ </component>
70
+ </template>
71
+
72
+ <style>
73
+ .btn-primary,
74
+ .btn-secondary {
75
+ svg {
76
+ color: #fff;
77
+ }
78
+ }
79
+
80
+ .btn-tertiary {
81
+ svg {
82
+ color: var(--primary);
83
+ }
84
+ }
85
+
86
+ /* Circle button styles */
87
+ .btn-circle.btn-normal {
88
+ @apply w-12;
89
+ }
90
+
91
+ .btn-circle.btn-sm {
92
+ @apply w-9.5;
93
+ }
94
+
95
+ .btn-circle.btn-xs {
96
+ @apply w-7;
97
+ }
98
+
99
+ .btn-circle svg {
100
+ margin: 0;
101
+ }
102
102
  </style>