spoko-design-system 0.4.3 → 0.4.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.
Files changed (170) hide show
  1. package/.astro/settings.json +4 -4
  2. package/.github/dependabot.yml +11 -11
  3. package/.github/todo.yml +3 -3
  4. package/.github/workflows/deploy.yml +39 -39
  5. package/.stackblitzrc +5 -5
  6. package/.vscode/extensions.json +5 -5
  7. package/.vscode/launch.json +11 -11
  8. package/.vscode/settings.json +5 -5
  9. package/LICENSE +21 -21
  10. package/README.md +114 -114
  11. package/astro-i18next.config.mjs +17 -17
  12. package/astro-i18next.config.ts +10 -10
  13. package/astro.config.mjs +86 -86
  14. package/dev-dist/sw.js +91 -91
  15. package/dev-dist/workbox-c676b6d3.js +3391 -3391
  16. package/icon.config.ts +277 -273
  17. package/index.ts +63 -63
  18. package/package.json +19 -19
  19. package/public/fonts/lg.svg +53 -53
  20. package/public/fonts/vwhead-bold-demo.html +549 -549
  21. package/public/fonts/vwhead-regular-demo.html +549 -549
  22. package/public/fonts/vwtext-bold-demo.html +549 -549
  23. package/public/fonts/vwtext-regular-demo.html +549 -549
  24. package/public/github.svg +3 -3
  25. package/public/grid_dot.svg +4 -4
  26. package/public/linkedin.svg +44 -44
  27. package/public/locales/en/translation.json +8 -8
  28. package/public/locales/pl/translation.json +8 -8
  29. package/public/make-scrollable-code-focusable.js +3 -3
  30. package/public/pagefind.yml +3 -3
  31. package/public/polo.blue.svg +29 -29
  32. package/public/spoko.space.svg +71 -71
  33. package/public/twitter.svg +46 -46
  34. package/renovate.json +6 -6
  35. package/sandbox.config.json +11 -11
  36. package/src/MyComponent.astro +8 -8
  37. package/src/components/Badge.vue +19 -19
  38. package/src/components/Badges.vue +21 -21
  39. package/src/components/Breadcrumbs.vue +107 -107
  40. package/src/components/Button.vue +87 -63
  41. package/src/components/ButtonCopy.astro +183 -183
  42. package/src/components/ButtonCopy.vue +36 -36
  43. package/src/components/Card.astro +27 -27
  44. package/src/components/Carousel.astro +26 -26
  45. package/src/components/Category/CategoriesCarousel.astro +101 -101
  46. package/src/components/Category/CategoryDetails.astro +169 -169
  47. package/src/components/Category/CategoryLink.vue +23 -23
  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/CategoryLink.astro +18 -18
  53. package/src/components/Copyright.astro +12 -12
  54. package/src/components/Date.astro +7 -7
  55. package/src/components/Faq.astro +33 -33
  56. package/src/components/FaqItem.astro +96 -96
  57. package/src/components/FeaturesList.vue +41 -41
  58. package/src/components/FuckRussia.vue +62 -62
  59. package/src/components/HandDrive.astro +29 -29
  60. package/src/components/Header/Header.astro +210 -210
  61. package/src/components/Header/SkipToContent.astro +1 -1
  62. package/src/components/Headline.vue +48 -48
  63. package/src/components/Image.astro +30 -30
  64. package/src/components/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/PostHeader.astro +103 -103
  71. package/src/components/PrCode.vue +141 -141
  72. package/src/components/Product/ProductButton.vue +18 -18
  73. package/src/components/Product/ProductCarousel.astro +35 -35
  74. package/src/components/Product/ProductCodes.vue +174 -174
  75. package/src/components/Product/ProductDetails.vue +1 -1
  76. package/src/components/Product/ProductEngineType.vue +42 -42
  77. package/src/components/Product/ProductImage.astro +40 -40
  78. package/src/components/Product/ProductLink.astro +101 -101
  79. package/src/components/Product/ProductLink.vue +59 -59
  80. package/src/components/Product/ProductLinkInfo.astro +37 -37
  81. package/src/components/Product/ProductNumber.astro +60 -60
  82. package/src/components/ProductCarousel.astro +38 -38
  83. package/src/components/ProductCodes.vue +39 -39
  84. package/src/components/ProductDetailName.vue +52 -52
  85. package/src/components/ProductDetailsList.vue +65 -65
  86. package/src/components/ProductTile.astro +48 -48
  87. package/src/components/Quote.vue +23 -23
  88. package/src/components/ReloadPrompt.astro +50 -50
  89. package/src/components/SlimBanner.vue +72 -72
  90. package/src/components/Table.vue +32 -32
  91. package/src/components/TableOfContents.astro +15 -15
  92. package/src/components/Translations.vue +23 -23
  93. package/src/components/flags/FlagPL.vue +3 -3
  94. package/src/components/flags/FlagUA.vue +2 -2
  95. package/src/components/layout/Container.astro +7 -7
  96. package/src/components/layout/Header.astro +80 -80
  97. package/src/config.ts +56 -56
  98. package/src/design.config.ts +98 -98
  99. package/src/env.d.ts +6 -6
  100. package/src/layouts/Layout.astro +61 -61
  101. package/src/layouts/MainLayout.astro +81 -81
  102. package/src/layouts/partials/FooterCommon.astro +4 -4
  103. package/src/layouts/partials/HeadCommon.astro +44 -44
  104. package/src/layouts/partials/HeadSEO.astro +41 -41
  105. package/src/pages/components/badges.mdx +57 -57
  106. package/src/pages/components/breadcrumbs.mdx +139 -139
  107. package/src/pages/components/buttons.mdx +357 -253
  108. package/src/pages/components/card.mdx +294 -294
  109. package/src/pages/components/carousel.mdx +62 -62
  110. package/src/pages/components/copyright.mdx +42 -42
  111. package/src/pages/components/details-list.mdx +115 -115
  112. package/src/pages/components/features-list.mdx +37 -37
  113. package/src/pages/components/flags.mdx +49 -49
  114. package/src/pages/components/fuck-russia.mdx +39 -39
  115. package/src/pages/components/hand-drive.mdx +38 -38
  116. package/src/pages/components/headline.mdx +152 -152
  117. package/src/pages/components/icons.astro +135 -135
  118. package/src/pages/components/image.mdx +513 -513
  119. package/src/pages/components/input.mdx +45 -45
  120. package/src/pages/components/jumbotron.mdx +359 -359
  121. package/src/pages/components/modal.mdx +64 -64
  122. package/src/pages/components/post-header.mdx +60 -60
  123. package/src/pages/components/pr-code.mdx +65 -65
  124. package/src/pages/components/product-number.mdx +58 -58
  125. package/src/pages/components/product-tile.mdx +51 -51
  126. package/src/pages/components/quote.mdx +33 -33
  127. package/src/pages/components/slimbanner.mdx +35 -35
  128. package/src/pages/components/table.mdx +108 -108
  129. package/src/pages/core/colors.mdx +10 -10
  130. package/src/pages/core/grid.mdx +89 -89
  131. package/src/pages/core/introduction.mdx +77 -77
  132. package/src/pages/core/shadows.astro +20 -20
  133. package/src/pages/core/typography.astro +49 -49
  134. package/src/pages/index.astro +130 -130
  135. package/src/pages/patterns/introduction.mdx +60 -60
  136. package/src/pwa.ts +12 -12
  137. package/src/styles/_variables.scss +70 -70
  138. package/src/styles/base/base.css +184 -184
  139. package/src/styles/base/grid.css +92 -92
  140. package/src/styles/base/typography.css +70 -70
  141. package/src/styles/content.css +73 -73
  142. package/src/styles/main.css +7 -7
  143. package/src/types/Product.ts +31 -31
  144. package/src/types/astro.d.ts +3 -3
  145. package/src/utils/product/getPriceFormatted.ts +15 -15
  146. package/src/utils/product/getProductChecklist.ts +17 -17
  147. package/src/utils/product/useFormatProductNumber.ts +41 -41
  148. package/src/utils/seo/getShorterDescription.ts +14 -14
  149. package/src/utils/text/formatDate.ts +5 -5
  150. package/src/utils/text/formatLocaleNumber.ts +6 -6
  151. package/src/utils/text/formatPad.ts +12 -12
  152. package/src/utils/text/getNumberFormatted.ts +33 -33
  153. package/src/utils/text/getTranslatedLink.ts +5 -5
  154. package/src/utils/text.ts +19 -19
  155. package/tailwind.config.cjs +8 -8
  156. package/tsconfig.json +28 -28
  157. package/uno-config/index.ts +61 -61
  158. package/uno-config/theme/breakpoints.ts +9 -9
  159. package/uno-config/theme/colors.ts +64 -64
  160. package/uno-config/theme/dimensions.ts +17 -17
  161. package/uno-config/theme/effects.ts +14 -14
  162. package/uno-config/theme/grid.ts +10 -10
  163. package/uno-config/theme/index.ts +28 -28
  164. package/uno-config/theme/shortcuts/buttons.ts +42 -41
  165. package/uno-config/theme/shortcuts/components.ts +92 -92
  166. package/uno-config/theme/shortcuts/constants.ts +10 -10
  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,64 +1,88 @@
1
- <script setup lang="ts">
2
-
3
- const props = defineProps<{
4
- href?: string;
5
- title?: string;
6
- primary?: boolean;
7
- primaryOutline?: boolean;
8
- secondary?: boolean;
9
- secondaryOutline?: boolean;
10
- tertiary?: boolean;
11
- tertiaryOutline?: boolean;
12
- text?: boolean;
13
- tag?: boolean;
14
- small?: boolean;
15
- medium?: boolean;
16
- rounded?: boolean;
17
- whiteHover?: boolean;
18
- lightHover?: boolean;
19
- mediumHover?: boolean;
20
- darkHover?: boolean;
21
- }>();
22
-
23
- const tag = props.href && props.href.length ? 'a' : 'button'
24
- const classes = {
25
- "btn-primary": props.primary,
26
- "btn-primary-outline": props.primaryOutline,
27
- "btn-secondary": props.secondary,
28
- "btn-secondary-outline": props.secondaryOutline,
29
- "btn-tertiary": props.tertiary,
30
- "btn-tertiary-outline": props.tertiaryOutline,
31
- "btn-text": props.text,
32
- "btn-tag": props.tag,
33
- "btn-sm": props.medium,
34
- "btn-xs": props.small,
35
- "btn-normal": !props.small && !props.medium,
36
- "rounded-full": props.rounded,
37
- "btn-white-hover": props.whiteHover,
38
- "btn-light-hover": props.lightHover,
39
- "btn-medium-hover": props.mediumHover,
40
- "btn-dark-hover": props.darkHover
41
- };
42
- </script>
43
-
44
- <template>
45
- <component :is="tag" :class="classes" :href="props.href" :title="props.title ? props.title : null">
46
- <slot></slot>
47
- </component>
48
- </template>
49
-
50
- <style>
51
- .btn-primary,
52
- .btn-secondary {
53
- svg {
54
- color: #fff;
55
- }
56
- }
57
-
58
- .btn-tertiary {
59
- svg {
60
- color: var(--primary);
61
- }
62
- }
63
-
1
+ <script setup lang="ts">
2
+ const props = defineProps<{
3
+ href?: string;
4
+ title?: string;
5
+ primary?: boolean;
6
+ primaryOutline?: boolean;
7
+ secondary?: boolean;
8
+ secondaryOutline?: boolean;
9
+ tertiary?: boolean;
10
+ tertiaryOutline?: boolean;
11
+ text?: boolean;
12
+ tag?: boolean;
13
+ small?: boolean;
14
+ medium?: boolean;
15
+ rounded?: boolean;
16
+ whiteHover?: boolean;
17
+ lightHover?: boolean;
18
+ mediumHover?: boolean;
19
+ darkHover?: boolean;
20
+ circle?: boolean;
21
+ }>();
22
+
23
+ // Check if we should add a default mediumHover for tertiary
24
+ const shouldAddDefaultMediumHover = props.tertiary || props.tertiaryOutline &&
25
+ !props.whiteHover &&
26
+ !props.lightHover &&
27
+ !props.mediumHover &&
28
+ !props.darkHover;
29
+
30
+ const tag = props.href && props.href.length ? 'a' : 'button'
31
+ const classes = {
32
+ "btn-primary": props.primary,
33
+ "btn-primary-outline": props.primaryOutline,
34
+ "btn-secondary": props.secondary,
35
+ "btn-secondary-outline": props.secondaryOutline,
36
+ "btn-tertiary": props.tertiary,
37
+ "btn-tertiary-outline": props.tertiaryOutline,
38
+ "btn-text": props.text,
39
+ "btn-tag": props.tag,
40
+ "btn-sm": props.medium,
41
+ "btn-xs": props.small,
42
+ "btn-normal": !props.small && !props.medium,
43
+ "rounded-full": props.rounded,
44
+ "btn-circle": props.circle,
45
+ "btn-white-hover": props.whiteHover,
46
+ "btn-light-hover": props.lightHover,
47
+ "btn-medium-hover": props.mediumHover || shouldAddDefaultMediumHover,
48
+ "btn-dark-hover": props.darkHover
49
+ };
50
+ </script>
51
+
52
+ <template>
53
+ <component :is="tag" :class="classes" :href="props.href" :title="props.title ? props.title : null">
54
+ <slot></slot>
55
+ </component>
56
+ </template>
57
+
58
+ <style>
59
+ .btn-primary,
60
+ .btn-secondary {
61
+ svg {
62
+ color: #fff;
63
+ }
64
+ }
65
+
66
+ .btn-tertiary {
67
+ svg {
68
+ color: var(--primary);
69
+ }
70
+ }
71
+
72
+ /* Circle button styles */
73
+ .btn-circle.btn-normal {
74
+ @apply w-12;
75
+ }
76
+
77
+ .btn-circle.btn-sm {
78
+ @apply w-9.5;
79
+ }
80
+
81
+ .btn-circle.btn-xs {
82
+ @apply w-7;
83
+ }
84
+
85
+ .btn-circle svg {
86
+ margin: 0;
87
+ }
64
88
  </style>