spoko-design-system 1.24.0 → 1.24.2
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/CHANGELOG.md +12 -0
- package/package.json +31 -30
- package/src/components/Breadcrumbs.vue +17 -30
- package/src/components/Jumbotron/types.ts +7 -0
- package/uno-config/index.ts +32 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
## [1.24.2](https://github.com/polo-blue/sds/compare/v1.24.1...v1.24.2) (2026-01-13)
|
|
2
|
+
|
|
3
|
+
### Bug Fixes
|
|
4
|
+
|
|
5
|
+
* improve TypeScript types for Breadcrumbs and Jumbotron ([d671a1a](https://github.com/polo-blue/sds/commit/d671a1ab1851f7e0eb138863a7a9dd05be9bea8e))
|
|
6
|
+
|
|
7
|
+
## [1.24.1](https://github.com/polo-blue/sds/compare/v1.24.0...v1.24.1) (2025-12-22)
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* **uno-config:** add circle-flags to safelist and Vue :class extractor ([672086a](https://github.com/polo-blue/sds/commit/672086a55b021eaa1ef30807068f7e1f645d39f2))
|
|
12
|
+
|
|
1
13
|
## [1.24.0](https://github.com/polo-blue/sds/compare/v1.23.2...v1.24.0) (2025-12-16)
|
|
2
14
|
|
|
3
15
|
### Features
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "spoko-design-system",
|
|
3
|
-
"version": "1.24.
|
|
3
|
+
"version": "1.24.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"private": false,
|
|
6
6
|
"main": "./index.ts",
|
|
@@ -54,18 +54,18 @@
|
|
|
54
54
|
"spoko design system"
|
|
55
55
|
],
|
|
56
56
|
"dependencies": {
|
|
57
|
-
"@algolia/client-search": "^5.46.
|
|
57
|
+
"@algolia/client-search": "^5.46.2",
|
|
58
58
|
"@astrojs/mdx": "^4.3.13",
|
|
59
59
|
"@astrojs/node": "^9.5.1",
|
|
60
|
-
"@astrojs/sitemap": "^3.6.
|
|
60
|
+
"@astrojs/sitemap": "^3.6.1",
|
|
61
61
|
"@astrojs/ts-plugin": "^1.10.6",
|
|
62
|
-
"@astrojs/vue": "^5.1.
|
|
63
|
-
"@docsearch/css": "^4.
|
|
62
|
+
"@astrojs/vue": "^5.1.4",
|
|
63
|
+
"@docsearch/css": "^4.4.0",
|
|
64
64
|
"@floating-ui/vue": "^1.1.9",
|
|
65
65
|
"@iconify-json/ant-design": "^1.2.5",
|
|
66
66
|
"@iconify-json/bi": "^1.2.7",
|
|
67
67
|
"@iconify-json/bx": "^1.2.2",
|
|
68
|
-
"@iconify-json/carbon": "^1.2.
|
|
68
|
+
"@iconify-json/carbon": "^1.2.16",
|
|
69
69
|
"@iconify-json/circle-flags": "^1.2.10",
|
|
70
70
|
"@iconify-json/ei": "^1.2.2",
|
|
71
71
|
"@iconify-json/el": "^1.2.2",
|
|
@@ -77,30 +77,30 @@
|
|
|
77
77
|
"@iconify-json/ic": "^1.2.4",
|
|
78
78
|
"@iconify-json/icon-park-outline": "^1.2.4",
|
|
79
79
|
"@iconify-json/la": "^1.2.1",
|
|
80
|
-
"@iconify-json/lucide": "^1.2.
|
|
81
|
-
"@iconify-json/material-symbols-light": "^1.2.
|
|
80
|
+
"@iconify-json/lucide": "^1.2.84",
|
|
81
|
+
"@iconify-json/material-symbols-light": "^1.2.51",
|
|
82
82
|
"@iconify-json/mdi": "^1.2.3",
|
|
83
83
|
"@iconify-json/noto-v1": "^1.2.5",
|
|
84
84
|
"@iconify-json/octicon": "^1.2.19",
|
|
85
85
|
"@iconify-json/ph": "^1.2.2",
|
|
86
|
-
"@iconify-json/simple-icons": "^1.2.
|
|
86
|
+
"@iconify-json/simple-icons": "^1.2.66",
|
|
87
87
|
"@iconify-json/streamline": "^1.2.5",
|
|
88
88
|
"@iconify-json/streamline-emojis": "^1.2.4",
|
|
89
89
|
"@iconify-json/streamline-freehand-color": "^1.2.2",
|
|
90
90
|
"@iconify-json/system-uicons": "^1.2.4",
|
|
91
91
|
"@iconify-json/uil": "^1.2.3",
|
|
92
|
-
"@iconify-json/vscode-icons": "^1.2.
|
|
93
|
-
"@iconify/json": "^2.2.
|
|
92
|
+
"@iconify-json/vscode-icons": "^1.2.38",
|
|
93
|
+
"@iconify/json": "^2.2.427",
|
|
94
94
|
"@iconify/vue": "^5.0.0",
|
|
95
|
-
"@playform/compress": "^0.2.
|
|
95
|
+
"@playform/compress": "^0.2.1",
|
|
96
96
|
"@playform/inline": "^0.1.2",
|
|
97
|
-
"@unocss/astro": "66.5.
|
|
98
|
-
"@unocss/preset-attributify": "66.5.
|
|
99
|
-
"@unocss/preset-typography": "66.5.
|
|
100
|
-
"@unocss/preset-uno": "66.5.
|
|
101
|
-
"@unocss/preset-web-fonts": "66.5.
|
|
102
|
-
"@unocss/preset-wind": "66.5.
|
|
103
|
-
"@unocss/reset": "66.5.
|
|
97
|
+
"@unocss/astro": "66.5.12",
|
|
98
|
+
"@unocss/preset-attributify": "66.5.12",
|
|
99
|
+
"@unocss/preset-typography": "66.5.12",
|
|
100
|
+
"@unocss/preset-uno": "66.5.12",
|
|
101
|
+
"@unocss/preset-web-fonts": "66.5.12",
|
|
102
|
+
"@unocss/preset-wind": "66.5.12",
|
|
103
|
+
"@unocss/reset": "66.5.12",
|
|
104
104
|
"@vite-pwa/astro": "^1.2.0",
|
|
105
105
|
"@vueuse/core": "^14.1.0",
|
|
106
106
|
"astro-icon": "^1.1.5",
|
|
@@ -111,34 +111,35 @@
|
|
|
111
111
|
"dotenv": "^17.2.3",
|
|
112
112
|
"swiper": "^12.0.3",
|
|
113
113
|
"tippy.js": "^6.3.7",
|
|
114
|
-
"unocss": "66.5.
|
|
114
|
+
"unocss": "66.5.12",
|
|
115
115
|
"vite-plugin-pwa": "^1.2.0",
|
|
116
|
-
"vue": "^3.5.
|
|
116
|
+
"vue": "^3.5.26"
|
|
117
117
|
},
|
|
118
118
|
"devDependencies": {
|
|
119
|
-
"@commitlint/cli": "^20.
|
|
120
|
-
"@commitlint/config-conventional": "^20.
|
|
119
|
+
"@commitlint/cli": "^20.3.1",
|
|
120
|
+
"@commitlint/config-conventional": "^20.3.1",
|
|
121
121
|
"@semantic-release/changelog": "^6.0.3",
|
|
122
122
|
"@semantic-release/git": "^10.0.1",
|
|
123
123
|
"@types/gtag.js": "^0.0.20",
|
|
124
|
-
"@types/node": "^25.0.
|
|
125
|
-
"@typescript-eslint/eslint-plugin": "^8.
|
|
126
|
-
"@typescript-eslint/parser": "^8.
|
|
127
|
-
"@unocss/transformer-variant-group": "66.5.
|
|
124
|
+
"@types/node": "^25.0.7",
|
|
125
|
+
"@typescript-eslint/eslint-plugin": "^8.53.0",
|
|
126
|
+
"@typescript-eslint/parser": "^8.53.0",
|
|
127
|
+
"@unocss/transformer-variant-group": "66.5.12",
|
|
128
128
|
"@vitejs/plugin-vue": "^6.0.3",
|
|
129
|
-
"@vue/compiler-sfc": "^3.5.
|
|
129
|
+
"@vue/compiler-sfc": "^3.5.26",
|
|
130
130
|
"@vue/eslint-config-typescript": "^14.6.0",
|
|
131
|
-
"astro": "^5.16.
|
|
131
|
+
"astro": "^5.16.9",
|
|
132
132
|
"conventional-changelog-conventionalcommits": "^9.1.0",
|
|
133
133
|
"eslint": "^9.39.2",
|
|
134
134
|
"eslint-plugin-astro": "^1.5.0",
|
|
135
135
|
"eslint-plugin-vue": "^10.6.2",
|
|
136
136
|
"husky": "^9.1.7",
|
|
137
|
+
"jscpd": "^4.0.7",
|
|
137
138
|
"prettier": "^3.7.4",
|
|
138
139
|
"prettier-plugin-astro": "^0.14.1",
|
|
139
140
|
"semantic-release": "^25.0.2",
|
|
140
141
|
"unocss": "^0.65.0",
|
|
141
|
-
"vite": "^7.3.
|
|
142
|
+
"vite": "^7.3.1"
|
|
142
143
|
},
|
|
143
144
|
"packageManager": "pnpm@10.17.1",
|
|
144
145
|
"pnpm": {
|
|
@@ -1,40 +1,27 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
+
import { computed } from 'vue';
|
|
3
|
+
|
|
2
4
|
export interface Breadcrumb {
|
|
3
5
|
name: string;
|
|
4
6
|
path: string;
|
|
5
7
|
}
|
|
6
8
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
+
interface Props {
|
|
10
|
+
showBack?: boolean;
|
|
11
|
+
textBack?: string;
|
|
12
|
+
showHome?: boolean;
|
|
13
|
+
breadcrumbs: Breadcrumb[];
|
|
14
|
+
productNumber?: string;
|
|
15
|
+
withMicrodata?: boolean;
|
|
16
|
+
class?: string;
|
|
17
|
+
}
|
|
9
18
|
|
|
10
|
-
const props = defineProps({
|
|
11
|
-
showBack:
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
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
|
-
withMicrodata: {
|
|
34
|
-
type: Boolean,
|
|
35
|
-
required: false,
|
|
36
|
-
default: true,
|
|
37
|
-
},
|
|
19
|
+
const props = withDefaults(defineProps<Props>(), {
|
|
20
|
+
showBack: false,
|
|
21
|
+
textBack: 'Back',
|
|
22
|
+
showHome: false,
|
|
23
|
+
productNumber: undefined,
|
|
24
|
+
withMicrodata: true,
|
|
38
25
|
});
|
|
39
26
|
|
|
40
27
|
const isLast = (index: number) => {
|
|
@@ -14,8 +14,13 @@ export interface Props {
|
|
|
14
14
|
variant?: 'default' | 'hero' | 'post' | 'post-split';
|
|
15
15
|
title?: string;
|
|
16
16
|
image?: string;
|
|
17
|
+
imageWidth?: number;
|
|
18
|
+
imageHeight?: number;
|
|
19
|
+
imageClass?: string;
|
|
17
20
|
backgroundClass?: string;
|
|
18
21
|
slim?: boolean;
|
|
22
|
+
lang?: string;
|
|
23
|
+
class?: string;
|
|
19
24
|
|
|
20
25
|
// Default & Hero variant props
|
|
21
26
|
description?: string;
|
|
@@ -27,5 +32,7 @@ export interface Props {
|
|
|
27
32
|
categories?: Category[];
|
|
28
33
|
|
|
29
34
|
// Post Split variant props
|
|
35
|
+
fullWidth?: boolean;
|
|
36
|
+
align?: 'left' | 'center' | 'right';
|
|
30
37
|
split?: 'equal' | 'wide';
|
|
31
38
|
}
|
package/uno-config/index.ts
CHANGED
|
@@ -162,8 +162,15 @@ export function createSdsConfig(customConfig: CustomConfig = {}) {
|
|
|
162
162
|
'i-simple-icons-youtube',
|
|
163
163
|
'i-simple-icons-vimeo',
|
|
164
164
|
|
|
165
|
+
// Language flags for Translations component (dynamic Vue classes)
|
|
166
|
+
'i-circle-flags:en',
|
|
167
|
+
'i-circle-flags:pl',
|
|
168
|
+
|
|
165
169
|
// All peer selectors from the list (needed for floating labels)
|
|
166
170
|
...peerSelectorClasses,
|
|
171
|
+
|
|
172
|
+
// Custom safelist from consumer config
|
|
173
|
+
...(customConfig.safelist || []),
|
|
167
174
|
],
|
|
168
175
|
// Optimized extractors for static Astro builds
|
|
169
176
|
extractors: [
|
|
@@ -197,6 +204,31 @@ export function createSdsConfig(customConfig: CustomConfig = {}) {
|
|
|
197
204
|
}
|
|
198
205
|
}
|
|
199
206
|
|
|
207
|
+
// For .vue files, extract from :class bindings (dynamic classes)
|
|
208
|
+
if (id && id.endsWith('.vue')) {
|
|
209
|
+
// Match :class="[...]" or :class="{...}" or :class="'...'"
|
|
210
|
+
const vueClassRegex = /:class=["'`]([^"'`]+)["'`]/g;
|
|
211
|
+
while ((match = vueClassRegex.exec(code)) !== null) {
|
|
212
|
+
// Extract class names from ternary expressions and string literals
|
|
213
|
+
const classContent = match[1];
|
|
214
|
+
// Match quoted strings inside the expression (e.g., 'i-circle-flags:en')
|
|
215
|
+
const quotedStrings = classContent.match(/['"]([^'"]+)['"]/g);
|
|
216
|
+
if (quotedStrings) {
|
|
217
|
+
quotedStrings.forEach(quoted => {
|
|
218
|
+
const cls = quoted.replace(/['"]/g, '').trim();
|
|
219
|
+
if (cls && !cls.includes('?') && !cls.includes(':') || cls.startsWith('i-')) {
|
|
220
|
+
// Split by spaces in case multiple classes
|
|
221
|
+
cls.split(/\s+/).forEach(c => {
|
|
222
|
+
if (c && c.length > 1) {
|
|
223
|
+
result.add(c);
|
|
224
|
+
}
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
|
|
200
232
|
return result;
|
|
201
233
|
},
|
|
202
234
|
},
|