@shopware/cms-base-layer 2.0.0 → 3.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.
Files changed (67) hide show
  1. package/README.md +167 -125
  2. package/app/app.config.ts +12 -0
  3. package/app/components/SwCategoryNavigation.vue +25 -18
  4. package/app/components/SwFilterDropdown.vue +54 -0
  5. package/app/components/SwListingProductPrice.vue +2 -2
  6. package/app/components/SwMedia3D.vue +14 -5
  7. package/app/components/SwProductCard.vue +24 -21
  8. package/app/components/SwProductCardDetails.vue +29 -12
  9. package/app/components/SwProductCardImage.vue +30 -29
  10. package/app/components/SwProductGallery.vue +18 -14
  11. package/app/components/SwProductListingFilter.vue +20 -9
  12. package/app/components/SwProductListingFilters.vue +3 -7
  13. package/app/components/SwProductListingFiltersHorizontal.vue +306 -0
  14. package/app/components/SwProductPrice.vue +3 -3
  15. package/app/components/SwProductRating.vue +40 -0
  16. package/app/components/SwProductReviews.vue +6 -19
  17. package/app/components/SwProductUnits.vue +10 -15
  18. package/app/components/SwQuantitySelect.vue +4 -7
  19. package/app/components/SwSlider.vue +150 -51
  20. package/app/components/SwSortDropdown.vue +10 -6
  21. package/app/components/SwVariantConfigurator.vue +13 -13
  22. package/app/components/listing-filters/SwFilterPrice.vue +45 -40
  23. package/app/components/listing-filters/SwFilterProperties.vue +40 -33
  24. package/app/components/listing-filters/SwFilterRating.vue +36 -27
  25. package/app/components/listing-filters/SwFilterShippingFree.vue +39 -32
  26. package/app/components/public/cms/CmsBlockSpatialViewer.vue +94 -0
  27. package/app/components/public/cms/CmsGenericBlock.md +17 -2
  28. package/app/components/public/cms/CmsGenericBlock.vue +21 -2
  29. package/app/components/public/cms/CmsGenericElement.vue +7 -2
  30. package/app/components/public/cms/CmsNoComponent.vue +87 -8
  31. package/app/components/public/cms/CmsPage.md +19 -2
  32. package/app/components/public/cms/CmsPage.vue +7 -0
  33. package/app/components/public/cms/FrontendAccountCustomerGroupRegistrationPage.vue +52 -0
  34. package/app/components/public/cms/block/CmsBlockCenterText.vue +1 -1
  35. package/app/components/public/cms/block/CmsBlockImageText.vue +5 -5
  36. package/app/components/public/cms/block/CmsBlockTextOnImage.vue +5 -12
  37. package/app/components/public/cms/element/CmsElementBuyBox.vue +3 -3
  38. package/app/components/public/cms/element/CmsElementCrossSelling.vue +19 -3
  39. package/app/components/public/cms/element/CmsElementImage.vue +12 -35
  40. package/app/components/public/cms/element/CmsElementImageGallery.vue +117 -50
  41. package/app/components/public/cms/element/CmsElementProductBox.vue +7 -1
  42. package/app/components/public/cms/element/CmsElementProductListing.vue +15 -4
  43. package/app/components/public/cms/element/CmsElementProductName.vue +6 -1
  44. package/app/components/public/cms/element/CmsElementProductSlider.vue +56 -35
  45. package/app/components/public/cms/element/CmsElementSidebarFilter.vue +10 -2
  46. package/app/components/public/cms/element/CmsElementText.vue +10 -11
  47. package/app/components/public/cms/element/SwProductListingPagination.vue +2 -2
  48. package/app/components/public/cms/section/CmsSectionDefault.vue +2 -2
  49. package/app/components/public/cms/section/CmsSectionSidebar.vue +6 -3
  50. package/app/components/ui/BaseButton.vue +18 -15
  51. package/app/components/ui/ChevronIcon.vue +10 -13
  52. package/app/components/ui/WishlistIcon.vue +3 -8
  53. package/app/composables/useImagePlaceholder.ts +3 -3
  54. package/app/composables/useLcpImagePreload.test.ts +229 -0
  55. package/app/composables/useLcpImagePreload.ts +43 -0
  56. package/app/composables/useTypedAppConfig.ts +15 -0
  57. package/app/helpers/cms/findFirstCmsImageUrl.ts +86 -0
  58. package/app/helpers/cms/getImageSizes.test.ts +50 -0
  59. package/app/helpers/cms/getImageSizes.ts +36 -0
  60. package/app/helpers/html-to-vue/ast.ts +53 -19
  61. package/app/helpers/html-to-vue/getOptionsFromNode.ts +1 -1
  62. package/app/helpers/html-to-vue/renderToHtml.ts +7 -11
  63. package/app/helpers/html-to-vue/renderer.ts +86 -26
  64. package/index.d.ts +37 -5
  65. package/nuxt.config.ts +25 -0
  66. package/package.json +21 -21
  67. package/uno.config.ts +0 -83
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shopware/cms-base-layer",
3
- "version": "2.0.0",
3
+ "version": "3.0.0",
4
4
  "description": "Vue CMS Nuxt Layer for Shopware",
5
5
  "author": "Shopware",
6
6
  "repository": {
@@ -32,36 +32,36 @@
32
32
  "uno.config.ts"
33
33
  ],
34
34
  "dependencies": {
35
- "@iconify-json/carbon": "1.2.14",
35
+ "@iconify-json/carbon": "1.2.18",
36
36
  "@nuxt/image": "2.0.0",
37
- "@nuxt/kit": "4.2.1",
38
- "@tresjs/cientos": "4.3.1",
39
- "@tresjs/core": "4.3.6",
40
- "@unocss/nuxt": "66.5.4",
37
+ "@nuxt/kit": "4.4.6",
38
+ "@tresjs/cientos": "5.7.0",
39
+ "@tresjs/nuxt": "^5.6.0",
41
40
  "@vuelidate/core": "2.0.3",
42
41
  "@vuelidate/validators": "2.0.4",
43
- "@vueuse/core": "14.0.0",
42
+ "@vueuse/core": "14.1.0",
44
43
  "entities": "6.0.0",
44
+ "scule": "1.3.0",
45
45
  "html-to-ast": "0.0.6",
46
- "three": "0.173.0",
47
- "unocss": "66.5.4",
48
- "vue": "3.5.24",
46
+ "three": "0.183.2",
47
+ "vue": "3.5.34",
49
48
  "xss": "1.0.15",
50
- "@shopware/composables": "1.10.0",
51
- "@shopware/api-client": "1.4.0",
52
- "@shopware/helpers": "1.6.0"
49
+ "@shopware/api-client": "1.5.0",
50
+ "@shopware/composables": "1.11.1",
51
+ "@shopware/helpers": "1.7.1"
53
52
  },
54
53
  "devDependencies": {
55
54
  "@biomejs/biome": "1.8.3",
56
- "@nuxt/schema": "4.2.1",
57
- "@types/three": "0.173.0",
58
- "@vitest/coverage-v8": "3.2.4",
59
- "nuxt": "4.2.1",
55
+ "@nuxt/schema": "4.4.6",
56
+ "@types/three": "0.182.0",
57
+ "@typescript/native-preview": "7.0.0-dev.20260205.1",
58
+ "@vitest/coverage-v8": "4.1.5",
59
+ "nuxt": "4.4.6",
60
60
  "typescript": "5.9.3",
61
61
  "unbuild": "2.0.0",
62
- "vitest": "3.2.4",
63
- "vue-router": "4.6.3",
64
- "vue-tsc": "3.1.4",
62
+ "vitest": "4.1.6",
63
+ "vue-router": "5.0.7",
64
+ "vue-tsc": "3.2.9",
65
65
  "tsconfig": "0.0.0"
66
66
  },
67
67
  "scripts": {
@@ -69,7 +69,7 @@
69
69
  "dev": "unbuild --stub",
70
70
  "lint": "biome check .",
71
71
  "lint:fix": "biome check . --write && pnpm run typecheck",
72
- "typecheck": "pnpm nuxt prepare && tsc --noEmit",
72
+ "typecheck": "pnpm nuxt prepare && tsgo --noEmit",
73
73
  "test": "vitest run",
74
74
  "test:watch": "vitest",
75
75
  "check-colors": "tsx scripts/check-unused-colors.ts"
package/uno.config.ts DELETED
@@ -1,83 +0,0 @@
1
- import {
2
- defineConfig,
3
- presetAttributify,
4
- presetIcons,
5
- presetTypography,
6
- presetWind3,
7
- } from "unocss";
8
-
9
- export default defineConfig({
10
- shortcuts: {},
11
- preflights: [
12
- {
13
- getCSS: () => `
14
- /* Filter collapse transition */
15
- .filter-collapse-enter-active,
16
- .filter-collapse-leave-active {
17
- transition: all 0.3s ease-in-out;
18
- overflow: hidden;
19
- }
20
-
21
- .filter-collapse-enter-from,
22
- .filter-collapse-leave-to {
23
- max-height: 0;
24
- opacity: 0;
25
- }
26
-
27
- .filter-collapse-enter-to,
28
- .filter-collapse-leave-from {
29
- max-height: 1000px;
30
- opacity: 1;
31
- }
32
- `,
33
- },
34
- ],
35
- theme: {
36
- colors: {
37
- "brand-primary": "#543B95",
38
- "surface-surface": "#FFFFFF",
39
- "outline-outline": "#79747E",
40
- "outline-outline-variant": "#CAC4D0",
41
- "outline-outline-primary": "#543B95",
42
- "surface-on-surface": "#1D1B20",
43
- "surface-surface-variant": "#FBF6FF",
44
- "states-success": "#15B31C",
45
- "surface-on-surface-variant": "#696470",
46
- "surface-surface-disabled": "#E8E8E8",
47
- "surface-on-surface-disabled": "#9893A6",
48
- "surface-surface-primary": "#D0BCFF",
49
- "states-warning": "#F57C00",
50
- "surface-surface-container": "#F3EDF7",
51
- "surface-surface-container-highest": "#E6E0E9",
52
- "states-error": "#D12D24",
53
- "states-on-error": "#FFFFFF",
54
- "brand-primary-hover": "#45317A",
55
- "brand-on-primary": "#FFFFFF",
56
- "brand-secondary": "#E1D5FF",
57
- "brand-secondary-hover": "#D0BCFC",
58
- "brand-on-secondary": "#3A276A",
59
- "brand-tertiary": "#F1F1F1",
60
- "brand-tertiary-hover": "#E3E3E3",
61
- "brand-on-tertiary": "#1D1B20",
62
- "other-sale": "#D12D24",
63
- },
64
- fontFamily: {
65
- inter: "Inter",
66
- Noto_Serif: "Noto Serif",
67
- },
68
- },
69
- safelist: ["states-success", "states-error", "states-info", "states-warning"],
70
- presets: [
71
- presetWind3(),
72
- presetIcons({
73
- collections: {
74
- carbon: () =>
75
- import("@iconify-json/carbon/icons.json", {
76
- with: { type: "json" },
77
- }).then((i) => i.default),
78
- },
79
- }),
80
- presetAttributify(),
81
- presetTypography(),
82
- ],
83
- });