spoko-design-system 1.40.0 → 2.0.0

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/.releaserc.json CHANGED
@@ -1,93 +1,93 @@
1
- {
2
- "branches": [
3
- "main",
4
- {
5
- "name": "next",
6
- "prerelease": true
7
- },
8
- {
9
- "name": "beta",
10
- "prerelease": true
11
- }
12
- ],
13
- "plugins": [
14
- "@semantic-release/commit-analyzer",
15
- "@semantic-release/release-notes-generator",
16
- "@semantic-release/changelog",
17
- [
18
- "@semantic-release/npm",
19
- {
20
- "npmPublish": true,
21
- "tarballDir": "dist"
22
- }
23
- ],
24
- "@semantic-release/github",
25
- [
26
- "@semantic-release/git",
27
- {
28
- "assets": [
29
- "package.json",
30
- "CHANGELOG.md"
31
- ],
32
- "message": "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"
33
- }
34
- ]
35
- ],
36
- "preset": "conventionalcommits",
37
- "parserOpts": {
38
- "noteKeywords": [
39
- "BREAKING CHANGE",
40
- "BREAKING CHANGES"
41
- ]
42
- },
43
- "writerOpts": {
44
- "commitsSort": [
45
- "subject",
46
- "scope"
47
- ]
48
- },
49
- "analyzeCommits": {
50
- "releaseRules": [
51
- {
52
- "type": "feat",
53
- "release": "minor"
54
- },
55
- {
56
- "type": "fix",
57
- "release": "patch"
58
- },
59
- {
60
- "type": "perf",
61
- "release": "patch"
62
- },
63
- {
64
- "type": "refactor",
65
- "release": "patch"
66
- },
67
- {
68
- "type": "style",
69
- "release": "patch"
70
- },
71
- {
72
- "type": "docs",
73
- "release": "patch"
74
- },
75
- {
76
- "type": "test",
77
- "release": false
78
- },
79
- {
80
- "type": "ci",
81
- "release": false
82
- },
83
- {
84
- "type": "chore",
85
- "release": false
86
- },
87
- {
88
- "scope": "BREAKING CHANGE",
89
- "release": "major"
90
- }
91
- ]
92
- }
1
+ {
2
+ "branches": [
3
+ "main",
4
+ {
5
+ "name": "next",
6
+ "prerelease": true
7
+ },
8
+ {
9
+ "name": "beta",
10
+ "prerelease": true
11
+ }
12
+ ],
13
+ "plugins": [
14
+ "@semantic-release/commit-analyzer",
15
+ "@semantic-release/release-notes-generator",
16
+ "@semantic-release/changelog",
17
+ [
18
+ "@semantic-release/npm",
19
+ {
20
+ "npmPublish": true,
21
+ "tarballDir": "dist"
22
+ }
23
+ ],
24
+ "@semantic-release/github",
25
+ [
26
+ "@semantic-release/git",
27
+ {
28
+ "assets": [
29
+ "package.json",
30
+ "CHANGELOG.md"
31
+ ],
32
+ "message": "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"
33
+ }
34
+ ]
35
+ ],
36
+ "preset": "conventionalcommits",
37
+ "parserOpts": {
38
+ "noteKeywords": [
39
+ "BREAKING CHANGE",
40
+ "BREAKING CHANGES"
41
+ ]
42
+ },
43
+ "writerOpts": {
44
+ "commitsSort": [
45
+ "subject",
46
+ "scope"
47
+ ]
48
+ },
49
+ "analyzeCommits": {
50
+ "releaseRules": [
51
+ {
52
+ "breaking": true,
53
+ "release": "major"
54
+ },
55
+ {
56
+ "type": "feat",
57
+ "release": "minor"
58
+ },
59
+ {
60
+ "type": "fix",
61
+ "release": "patch"
62
+ },
63
+ {
64
+ "type": "perf",
65
+ "release": "patch"
66
+ },
67
+ {
68
+ "type": "refactor",
69
+ "release": "patch"
70
+ },
71
+ {
72
+ "type": "style",
73
+ "release": "patch"
74
+ },
75
+ {
76
+ "type": "docs",
77
+ "release": "patch"
78
+ },
79
+ {
80
+ "type": "test",
81
+ "release": false
82
+ },
83
+ {
84
+ "type": "ci",
85
+ "release": false
86
+ },
87
+ {
88
+ "type": "chore",
89
+ "release": false
90
+ }
91
+ ]
92
+ }
93
93
  }
package/CHANGELOG.md CHANGED
@@ -1,3 +1,16 @@
1
+ ## [2.0.0](https://github.com/polo-blue/sds/compare/v1.40.0...v2.0.0) (2026-06-25)
2
+
3
+ ### ⚠ BREAKING CHANGES
4
+
5
+ * the Breadcrumbs prop `productNumber` is renamed to `suffix`
6
+ and the hard-coded `Polo 6R` link-title prefix is removed (use `titlePrefix`).
7
+ This first shipped in 1.40.0, which a release-config bug mis-versioned as a
8
+ minor; 1.40.0 is deprecated in favour of 2.0.0. See MIGRATION-BREADCRUMBS.md.
9
+
10
+ ### Bug Fixes
11
+
12
+ * upgrade to Astro 7 (Vite 8/rolldown) and correct release config ([#472](https://github.com/polo-blue/sds/issues/472)) ([77b6e26](https://github.com/polo-blue/sds/commit/77b6e269573800e7cd376be6f19d95439175f279))
13
+
1
14
  ## [1.40.0](https://github.com/polo-blue/sds/compare/v1.39.3...v1.40.0) (2026-06-25)
2
15
 
3
16
  ### ⚠ BREAKING CHANGES
package/astro.config.mjs CHANGED
@@ -19,6 +19,12 @@ export default defineConfig({
19
19
  server: {
20
20
  port: 1234
21
21
  },
22
+ vite: {
23
+ // Vite 8 changed the default CSS minifier to lightningcss, which is stricter
24
+ // than esbuild and rejects some of our UnoCSS-generated CSS with
25
+ // "Unexpected token Colon". Restore the esbuild CSS minifier we built with.
26
+ build: { cssMinify: 'esbuild' },
27
+ },
22
28
  image: {
23
29
  service: sharpImageService(),
24
30
  domains: ["placehold.co", "api.polo.blue", "polo.blue", "media.istockphoto.com", "freepik.com", "img.freepik.com", "polo6r.pl"],
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "spoko-design-system",
3
- "version": "1.40.0",
3
+ "version": "2.0.0",
4
4
  "type": "module",
5
5
  "private": false,
6
6
  "main": "./index.ts",
@@ -65,11 +65,11 @@
65
65
  "spoko design system"
66
66
  ],
67
67
  "dependencies": {
68
- "@astrojs/mdx": "^6.0.3",
69
- "@astrojs/node": "^10.1.4",
68
+ "@astrojs/mdx": "^7.0.0",
69
+ "@astrojs/node": "^11.0.0",
70
70
  "@astrojs/sitemap": "^3.7.3",
71
71
  "@astrojs/ts-plugin": "^1.10.9",
72
- "@astrojs/vue": "^6.0.1",
72
+ "@astrojs/vue": "^7.0.0",
73
73
  "@docsearch/css": "^4.6.3",
74
74
  "@floating-ui/dom": "^1.7.6",
75
75
  "@floating-ui/vue": "^2.0.0",
@@ -140,7 +140,7 @@
140
140
  "@vitejs/plugin-vue": "^6.0.7",
141
141
  "@vue/compiler-sfc": "^3.5.38",
142
142
  "@vue/eslint-config-typescript": "^14.8.0",
143
- "astro": "^6.4.6",
143
+ "astro": "^7.0.2",
144
144
  "conventional-changelog-conventionalcommits": "^9.3.1",
145
145
  "eslint": "^10.5.0",
146
146
  "eslint-config-prettier": "^10.1.8",
@@ -43,9 +43,7 @@ The default variant is ideal for primary content sections. It supports custom in
43
43
  variant="default"
44
44
  title={`Lorem ipsum dolor sit amet, <span class="text-accent-light">consectetur</span> adipiscing elit.`}
45
45
  >
46
- <p slot="subtitle"
47
- class="mt-3 text-base text-gray-200 sm:mt-5 text-lg md:text-xl lg:mx-0 md:mt-5"
48
- >Nunc posuere massa eget turpis laoreet ultrices eget vel massa.</p>
46
+ <p slot="subtitle" class="mt-3 text-base text-gray-200 sm:mt-5 text-lg md:text-xl lg:mx-0 md:mt-5">Nunc posuere massa eget turpis laoreet ultrices eget vel massa.</p>
49
47
  <Fragment slot="cta-content">
50
48
  <Button primary rounded href="#" title="short text">
51
49
  Read More
@@ -81,9 +79,7 @@ A more compact version of the default variant, useful for secondary content sect
81
79
  slim
82
80
  title={`Lorem ipsum dolor sit amet, <span class="text-accent-light">consectetur</span> adipiscing elit.`}
83
81
  >
84
- <p slot="subtitle"
85
- class="mt-5 sm:mt-8 sm:flex sm:justify-center"
86
- >Nunc posuere massa eget turpis laoreet ultrices eget vel massa.</p>
82
+ <p slot="subtitle" class="mt-5 sm:mt-8 sm:flex sm:justify-center">Nunc posuere massa eget turpis laoreet ultrices eget vel massa.</p>
87
83
  </Jumbotron>
88
84
  </div>
89
85
 
@@ -468,9 +464,7 @@ Shows how to fully customize the header section using the intro slot. Useful for
468
464
  <h2 slot="intro" class="text-3xl text-white sm:(text-3xl pt-0) md:text-4xl lg:text-5xl">
469
465
  Lorem ipsum dolor sit amet, <span class="text-accent-light">consectetur</span> adipiscing elit.
470
466
  </h2>
471
- <p slot="subtitle"
472
- class="mt-5 sm:mt-8 sm:flex sm:justify-center"
473
- >Nunc posuere massa eget turpis laoreet ultrices eget vel massa.</p>
467
+ <p slot="subtitle" class="mt-5 sm:mt-8 sm:flex sm:justify-center">Nunc posuere massa eget turpis laoreet ultrices eget vel massa.</p>
474
468
  </Jumbotron>
475
469
  </div>
476
470
 
@@ -21,33 +21,13 @@ import { theme } from './theme/index.ts';
21
21
  import { generatePalette, defaultPalette, type PaletteInput } from './palette-generator.ts';
22
22
  import { peerSelectorClasses, peerVariant } from './peer-variants.ts';
23
23
 
24
- // Static imports for all icon collections (prevents Vite module runner issues)
25
- import antDesignIcons from '@iconify-json/ant-design/icons.json';
26
- import biIcons from '@iconify-json/bi/icons.json';
27
- import bxIcons from '@iconify-json/bx/icons.json';
28
- import carbonIcons from '@iconify-json/carbon/icons.json';
29
- import circleFlagsIcons from '@iconify-json/circle-flags/icons.json';
30
- import eiIcons from '@iconify-json/ei/icons.json';
31
- import elIcons from '@iconify-json/el/icons.json';
32
- import eosIcons from '@iconify-json/eos-icons/icons.json';
33
- import etIcons from '@iconify-json/et/icons.json';
34
- import flowbiteIcons from '@iconify-json/flowbite/icons.json';
35
- import fluentIcons from '@iconify-json/fluent/icons.json';
36
- import fluentEmojiIcons from '@iconify-json/fluent-emoji/icons.json';
37
- import icIcons from '@iconify-json/ic/icons.json';
38
- import iconParkOutlineIcons from '@iconify-json/icon-park-outline/icons.json';
39
- import laIcons from '@iconify-json/la/icons.json';
40
- import lucideIcons from '@iconify-json/lucide/icons.json';
41
- import materialSymbolsLightIcons from '@iconify-json/material-symbols-light/icons.json';
42
- import mdiIcons from '@iconify-json/mdi/icons.json';
43
- import notoV1Icons from '@iconify-json/noto-v1/icons.json';
44
- import octiconIcons from '@iconify-json/octicon/icons.json';
45
- import phIcons from '@iconify-json/ph/icons.json';
46
- import simpleIcons from '@iconify-json/simple-icons/icons.json';
47
- import systemUiconsIcons from '@iconify-json/system-uicons/icons.json';
48
- import uilIcons from '@iconify-json/uil/icons.json';
49
- import vscodeIcons from '@iconify-json/vscode-icons/icons.json';
50
- import streamlineFreehandColorIcons from '@iconify-json/streamline-freehand-color/icons.json';
24
+ // Icon collections are loaded lazily via dynamic import (see `iconCollections`
25
+ // in the presetIcons config below). They are deliberately NOT statically
26
+ // imported: static imports inline every collection's `icons.json` (hundreds of
27
+ // MB across 26 collections) into this single module. On Vite 8's module runner
28
+ // that produces an inline sourcemap larger than V8's max string length
29
+ // (0x1fffffe8 536M chars), which crashes the build under Astro 7. Each loader
30
+ // must use a literal specifier so the bundler can statically resolve the chunk.
51
31
 
52
32
 
53
33
  interface CustomConfig extends Partial<UserConfig> {
@@ -208,34 +188,37 @@ export function createSdsConfig(customConfig: CustomConfig = {}) {
208
188
  'display': 'inline-block',
209
189
  'vertical-align': 'middle',
210
190
  },
191
+ // Lazy async loaders: each collection resolves to its own dynamic-import
192
+ // chunk instead of being inlined into this module (see the import note
193
+ // at the top of the file). Specifiers must be string literals so the
194
+ // bundler can statically resolve each chunk.
211
195
  collections: {
212
- // All icon collections with static imports to prevent Vite module runner issues
213
- 'ant-design': antDesignIcons,
214
- 'bi': biIcons,
215
- 'bx': bxIcons,
216
- 'carbon': carbonIcons,
217
- 'circle-flags': circleFlagsIcons,
218
- 'ei': eiIcons,
219
- 'el': elIcons,
220
- 'eos-icons': eosIcons,
221
- 'et': etIcons,
222
- 'flowbite': flowbiteIcons,
223
- 'fluent': fluentIcons,
224
- 'fluent-emoji': fluentEmojiIcons,
225
- 'ic': icIcons,
226
- 'icon-park-outline': iconParkOutlineIcons,
227
- 'la': laIcons,
228
- 'lucide': lucideIcons,
229
- 'material-symbols-light': materialSymbolsLightIcons,
230
- 'mdi': mdiIcons,
231
- 'noto-v1': notoV1Icons,
232
- 'octicon': octiconIcons,
233
- 'ph': phIcons,
234
- 'simple-icons': simpleIcons,
235
- 'system-uicons': systemUiconsIcons,
236
- 'uil': uilIcons,
237
- 'vscode-icons': vscodeIcons,
238
- 'streamline-freehand-color': streamlineFreehandColorIcons,
196
+ 'ant-design': () => import('@iconify-json/ant-design/icons.json').then((m) => m.default),
197
+ 'bi': () => import('@iconify-json/bi/icons.json').then((m) => m.default),
198
+ 'bx': () => import('@iconify-json/bx/icons.json').then((m) => m.default),
199
+ 'carbon': () => import('@iconify-json/carbon/icons.json').then((m) => m.default),
200
+ 'circle-flags': () => import('@iconify-json/circle-flags/icons.json').then((m) => m.default),
201
+ 'ei': () => import('@iconify-json/ei/icons.json').then((m) => m.default),
202
+ 'el': () => import('@iconify-json/el/icons.json').then((m) => m.default),
203
+ 'eos-icons': () => import('@iconify-json/eos-icons/icons.json').then((m) => m.default),
204
+ 'et': () => import('@iconify-json/et/icons.json').then((m) => m.default),
205
+ 'flowbite': () => import('@iconify-json/flowbite/icons.json').then((m) => m.default),
206
+ 'fluent': () => import('@iconify-json/fluent/icons.json').then((m) => m.default),
207
+ 'fluent-emoji': () => import('@iconify-json/fluent-emoji/icons.json').then((m) => m.default),
208
+ 'ic': () => import('@iconify-json/ic/icons.json').then((m) => m.default),
209
+ 'icon-park-outline': () => import('@iconify-json/icon-park-outline/icons.json').then((m) => m.default),
210
+ 'la': () => import('@iconify-json/la/icons.json').then((m) => m.default),
211
+ 'lucide': () => import('@iconify-json/lucide/icons.json').then((m) => m.default),
212
+ 'material-symbols-light': () => import('@iconify-json/material-symbols-light/icons.json').then((m) => m.default),
213
+ 'mdi': () => import('@iconify-json/mdi/icons.json').then((m) => m.default),
214
+ 'noto-v1': () => import('@iconify-json/noto-v1/icons.json').then((m) => m.default),
215
+ 'octicon': () => import('@iconify-json/octicon/icons.json').then((m) => m.default),
216
+ 'ph': () => import('@iconify-json/ph/icons.json').then((m) => m.default),
217
+ 'simple-icons': () => import('@iconify-json/simple-icons/icons.json').then((m) => m.default),
218
+ 'system-uicons': () => import('@iconify-json/system-uicons/icons.json').then((m) => m.default),
219
+ 'uil': () => import('@iconify-json/uil/icons.json').then((m) => m.default),
220
+ 'vscode-icons': () => import('@iconify-json/vscode-icons/icons.json').then((m) => m.default),
221
+ 'streamline-freehand-color': () => import('@iconify-json/streamline-freehand-color/icons.json').then((m) => m.default),
239
222
  }
240
223
  }),
241
224
  presetTypography(),