spoko-design-system 0.9.6 → 1.0.1

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 (180) hide show
  1. package/.astro/content.d.ts +1 -1
  2. package/.astro/data-store.json +1 -1
  3. package/.astro/settings.json +4 -4
  4. package/.astro/types.d.ts +2 -1
  5. package/.claude/settings.local.json +11 -1
  6. package/.github/dependabot.yml +11 -11
  7. package/.github/todo.yml +3 -3
  8. package/.github/workflows/deploy.yml +39 -39
  9. package/.github/workflows/release.yml +64 -0
  10. package/.releaserc.json +93 -0
  11. package/.stackblitzrc +5 -5
  12. package/.vscode/extensions.json +4 -5
  13. package/.vscode/launch.json +11 -11
  14. package/.vscode/settings.json +1 -5
  15. package/CHANGELOG.md +20 -0
  16. package/CONTRIBUTING.md +183 -0
  17. package/LICENSE +21 -21
  18. package/README.md +132 -116
  19. package/astro.config.mjs +84 -86
  20. package/dev-dist/sw.js +91 -91
  21. package/dev-dist/workbox-c676b6d3.js +3391 -3391
  22. package/icon.config.ts +340 -310
  23. package/index.ts +70 -70
  24. package/package.json +19 -11
  25. package/public/arrow-bottom.svg +7 -7
  26. package/public/fonts/lg.svg +53 -53
  27. package/public/fonts/vwhead-bold-demo.html +549 -549
  28. package/public/fonts/vwhead-regular-demo.html +549 -549
  29. package/public/fonts/vwtext-bold-demo.html +549 -549
  30. package/public/fonts/vwtext-regular-demo.html +549 -549
  31. package/public/github.svg +3 -3
  32. package/public/grid_dot.svg +4 -4
  33. package/public/linkedin.svg +44 -44
  34. package/public/make-scrollable-code-focusable.js +3 -3
  35. package/public/pagefind.yml +3 -3
  36. package/public/polo.blue.svg +29 -29
  37. package/public/spoko.space.svg +71 -71
  38. package/public/twitter.svg +46 -46
  39. package/renovate.json +6 -6
  40. package/sandbox.config.json +11 -11
  41. package/src/MyComponent.astro +8 -8
  42. package/src/components/Badge.vue +19 -19
  43. package/src/components/Badges.vue +21 -21
  44. package/src/components/Breadcrumbs.vue +94 -94
  45. package/src/components/Button.vue +101 -101
  46. package/src/components/ButtonCopy.astro +183 -183
  47. package/src/components/ButtonCopy.vue +36 -36
  48. package/src/components/Card.astro +27 -27
  49. package/src/components/Carousel.astro +26 -26
  50. package/src/components/Category/CategoriesCarousel.astro +100 -101
  51. package/src/components/Category/CategoryDetails.astro +168 -169
  52. package/src/components/Category/CategoryLink.vue +28 -28
  53. package/src/components/Category/CategorySidebarToggler.vue +9 -9
  54. package/src/components/Category/CategoryTile.astro +37 -37
  55. package/src/components/Category/CategoryViewToggler.astro +89 -89
  56. package/src/components/Category/SubCategoryLink.vue +19 -19
  57. package/src/components/Copyright.astro +12 -12
  58. package/src/components/Date.astro +7 -7
  59. package/src/components/Faq.astro +32 -33
  60. package/src/components/FaqItem.astro +80 -80
  61. package/src/components/FeaturesList.vue +37 -37
  62. package/src/components/FuckRussia.vue +62 -62
  63. package/src/components/HandDrive.astro +55 -29
  64. package/src/components/Header/Header.astro +210 -210
  65. package/src/components/Header/SkipToContent.astro +1 -1
  66. package/src/components/Headline.vue +107 -87
  67. package/src/components/Image.astro +30 -30
  68. package/src/components/LeftSidebar.astro +53 -53
  69. package/src/components/MainColors.vue +22 -22
  70. package/src/components/MainInput.vue +15 -15
  71. package/src/components/Modal.astro +27 -27
  72. package/src/components/PageContent.astro +5 -5
  73. package/src/components/PartNumber.vue +27 -27
  74. package/src/components/Post/PostCategories.astro +41 -41
  75. package/src/components/Post/PostCategories.vue +30 -30
  76. package/src/components/PostHeader.astro +103 -103
  77. package/src/components/PrCode.vue +141 -141
  78. package/src/components/Product/ProductButton.vue +18 -18
  79. package/src/components/Product/ProductCarousel.astro +35 -35
  80. package/src/components/Product/ProductEngineType.vue +42 -42
  81. package/src/components/Product/ProductImage.astro +40 -40
  82. package/src/components/Product/ProductLink.astro +96 -101
  83. package/src/components/Product/ProductLink.vue +59 -59
  84. package/src/components/Product/ProductLinkInfo.astro +37 -37
  85. package/src/components/Product/ProductNumber.astro +60 -60
  86. package/src/components/ProductCarousel.astro +38 -38
  87. package/src/components/ProductCodes.vue +39 -39
  88. package/src/components/ProductDetailName.vue +52 -52
  89. package/src/components/ProductDetailsList.vue +216 -216
  90. package/src/components/ProductTile.astro +47 -48
  91. package/src/components/Quote.vue +23 -23
  92. package/src/components/ReloadPrompt.astro +50 -50
  93. package/src/components/SlimBanner.vue +72 -72
  94. package/src/components/Table.vue +32 -32
  95. package/src/components/TableOfContents.astro +15 -15
  96. package/src/components/Translations.vue +23 -23
  97. package/src/components/flags/FlagPL.vue +3 -3
  98. package/src/components/flags/FlagUA.vue +2 -2
  99. package/src/components/{Layout → layout}/CallToAction.astro +52 -52
  100. package/src/components/{Layout → layout}/Container.astro +7 -7
  101. package/src/components/{Layout → layout}/Header.astro +80 -80
  102. package/src/config.ts +56 -56
  103. package/src/design.config.ts +98 -98
  104. package/src/env.d.ts +6 -6
  105. package/src/layouts/Layout.astro +58 -61
  106. package/src/layouts/MainLayout.astro +78 -81
  107. package/src/layouts/partials/FooterCommon.astro +4 -4
  108. package/src/layouts/partials/HeadCommon.astro +44 -44
  109. package/src/layouts/partials/HeadSEO.astro +41 -41
  110. package/src/pages/components/badges.mdx +57 -57
  111. package/src/pages/components/breadcrumbs.mdx +139 -139
  112. package/src/pages/components/buttons.mdx +359 -360
  113. package/src/pages/components/card.mdx +294 -294
  114. package/src/pages/components/carousel.mdx +62 -62
  115. package/src/pages/components/copyright.mdx +42 -42
  116. package/src/pages/components/details-list.mdx +115 -115
  117. package/src/pages/components/features-list.mdx +37 -37
  118. package/src/pages/components/flags.mdx +49 -49
  119. package/src/pages/components/fuck-russia.mdx +39 -39
  120. package/src/pages/components/hand-drive.mdx +78 -38
  121. package/src/pages/components/headline.mdx +137 -137
  122. package/src/pages/components/icons.astro +135 -135
  123. package/src/pages/components/image.mdx +513 -513
  124. package/src/pages/components/input.mdx +367 -367
  125. package/src/pages/components/jumbotron.mdx +359 -359
  126. package/src/pages/components/modal.mdx +64 -64
  127. package/src/pages/components/post-header.mdx +64 -64
  128. package/src/pages/components/pr-code.mdx +65 -65
  129. package/src/pages/components/product-number.mdx +58 -58
  130. package/src/pages/components/product-tile.mdx +51 -51
  131. package/src/pages/components/quote.mdx +33 -33
  132. package/src/pages/components/slimbanner.mdx +35 -35
  133. package/src/pages/components/table.mdx +108 -108
  134. package/src/pages/core/colors.mdx +10 -10
  135. package/src/pages/core/grid.mdx +89 -89
  136. package/src/pages/core/introduction.mdx +77 -77
  137. package/src/pages/core/shadows.astro +20 -20
  138. package/src/pages/core/typography.astro +49 -49
  139. package/src/pages/index.astro +264 -133
  140. package/src/pages/patterns/introduction.mdx +60 -60
  141. package/src/pwa.ts +12 -12
  142. package/src/styles/_variables.scss +70 -70
  143. package/src/styles/base/base.css +184 -184
  144. package/src/styles/base/grid.css +92 -92
  145. package/src/styles/base/typography.css +70 -70
  146. package/src/styles/content.css +73 -73
  147. package/src/styles/main.css +7 -7
  148. package/src/types/Product.ts +31 -31
  149. package/src/types/astro.d.ts +3 -3
  150. package/src/utils/category/getMainCategoryList.ts +8 -17
  151. package/src/utils/product/getPriceFormatted.ts +12 -15
  152. package/src/utils/product/getProductChecklist.ts +16 -17
  153. package/src/utils/product/useFormatProductNumber.ts +41 -41
  154. package/src/utils/seo/getShorterDescription.ts +14 -14
  155. package/src/utils/text/formatDate.ts +5 -5
  156. package/src/utils/text/formatLocaleNumber.ts +5 -6
  157. package/src/utils/text/formatPad.ts +12 -12
  158. package/src/utils/text/getNumberFormatted.ts +33 -33
  159. package/src/utils/text/getTranslatedLink.ts +5 -5
  160. package/src/utils/text.ts +19 -19
  161. package/tailwind.config.cjs +8 -8
  162. package/tsconfig.json +28 -28
  163. package/uno-config/index.ts +262 -268
  164. package/uno-config/theme/breakpoints.ts +9 -9
  165. package/uno-config/theme/colors.ts +64 -64
  166. package/uno-config/theme/dimensions.ts +17 -17
  167. package/uno-config/theme/effects.ts +14 -14
  168. package/uno-config/theme/grid.ts +10 -10
  169. package/uno-config/theme/index.ts +28 -28
  170. package/uno-config/theme/shortcuts/buttons.ts +53 -53
  171. package/uno-config/theme/shortcuts/components.ts +123 -123
  172. package/uno-config/theme/shortcuts/index.ts +20 -20
  173. package/uno-config/theme/shortcuts/layout.ts +74 -74
  174. package/uno-config/theme/typography.ts +29 -29
  175. package/uno.config.ts +2 -2
  176. package/.astro/icon.d.ts +0 -11909
  177. package/astro-i18next.config.mjs +0 -18
  178. package/astro-i18next.config.ts +0 -11
  179. package/public/locales/en/translation.json +0 -13
  180. package/public/locales/pl/translation.json +0 -13
@@ -1,94 +1,94 @@
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: Array 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-base">
43
- <li v-if="props.showBack" class="breadcrumb-item">
44
- <button
45
- class="breadcrumb-back-btn"
46
- :title="props.textBack"
47
- onclick="history.back()"
48
- >
49
- <span class="block px-3" i-bx-bx-arrow-back />
50
- </button>
51
- </li>
52
- </ul>
53
- <ul class="breadcrumbs-base overflow-x-auto overflow-y-hidden sm:mr-12"
54
- itemscope itemtype="https://schema.org/BreadcrumbList">
55
- <li v-if="props.showHome" class="breadcrumb-item">
56
- <a href="/"
57
- 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"
58
- :title="props.textBack"
59
- itemprop="item"
60
- i-carbon-home>
61
- </a>
62
- <meta itemprop="position" content="1">
63
- </li>
64
- <li v-for="(crumb, index) in breadcrumbs"
65
- :key="index"
66
- class="breadcrumb-item"
67
- itemprop="itemListElement"
68
- itemscope
69
- itemtype="https://schema.org/ListItem">
70
- <span v-if="index > 0 || props.showHome" class="text-gray-400 px-1 py-4.25 sm:py-1">/</span>
71
-
72
- <a v-if="!isLast(index)"
73
- :href="crumb.path"
74
- class="breadcrumb-link"
75
- itemprop="item"
76
- :title="`Polo 6R ${crumb.name}`">
77
- <strong class="font-normal" itemprop="name">{{ crumb.name }}</strong>
78
- </a>
79
- <a v-else
80
- :href="crumb.path"
81
- class="breadcrumb-link breadcrumb-link-disabled"
82
- :title="`Polo 6R ${crumb.name} ${productNumber}`"
83
- itemprop="item">
84
- <span class="font-normal" itemprop="name">
85
- <span v-html="crumb.name"></span>
86
- <b v-if="productNumber" class="hidden sm:inline font-normal ml-1">&nbsp;{{ productNumber }}</b>
87
- </span>
88
- </a>
89
-
90
- <meta itemprop="position" :content="String(props.showHome ? index + 2 : index + 1)">
91
- </li>
92
- </ul>
93
- </nav>
94
- </template>
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: Array 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-base">
43
+ <li v-if="props.showBack" class="breadcrumb-item">
44
+ <button
45
+ class="breadcrumb-back-btn"
46
+ :title="props.textBack"
47
+ onclick="history.back()"
48
+ >
49
+ <span class="block px-3" i-bx-bx-arrow-back />
50
+ </button>
51
+ </li>
52
+ </ul>
53
+ <ul class="breadcrumbs-base overflow-x-auto overflow-y-hidden sm:mr-12"
54
+ itemscope itemtype="https://schema.org/BreadcrumbList">
55
+ <li v-if="props.showHome" class="breadcrumb-item">
56
+ <a href="/"
57
+ 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"
58
+ :title="props.textBack"
59
+ itemprop="item"
60
+ i-carbon-home>
61
+ </a>
62
+ <meta itemprop="position" content="1">
63
+ </li>
64
+ <li v-for="(crumb, index) in breadcrumbs"
65
+ :key="index"
66
+ class="breadcrumb-item"
67
+ itemprop="itemListElement"
68
+ itemscope
69
+ itemtype="https://schema.org/ListItem">
70
+ <span v-if="index > 0 || props.showHome" class="text-gray-400 px-1 py-4.25 sm:py-1">/</span>
71
+
72
+ <a v-if="!isLast(index)"
73
+ :href="crumb.path"
74
+ class="breadcrumb-link"
75
+ itemprop="item"
76
+ :title="`Polo 6R ${crumb.name}`">
77
+ <strong class="font-normal" itemprop="name">{{ crumb.name }}</strong>
78
+ </a>
79
+ <a v-else
80
+ :href="crumb.path"
81
+ class="breadcrumb-link breadcrumb-link-disabled"
82
+ :title="`Polo 6R ${crumb.name} ${productNumber}`"
83
+ itemprop="item">
84
+ <span class="font-normal" itemprop="name">
85
+ <span v-html="crumb.name"></span>
86
+ <b v-if="productNumber" class="hidden sm:inline font-normal ml-1">&nbsp;{{ productNumber }}</b>
87
+ </span>
88
+ </a>
89
+
90
+ <meta itemprop="position" :content="String(props.showHome ? index + 2 : index + 1)">
91
+ </li>
92
+ </ul>
93
+ </nav>
94
+ </template>
@@ -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>