@kitconcept/website 2.0.0-alpha.2 → 2.0.0-alpha.20
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.draft +6 -1
- package/.release-it.json +4 -1
- package/CHANGELOG.md +107 -0
- package/package.json +23 -14
- package/src/components/Blocks/ContactList/schema.ts +11 -0
- package/src/config/blocks.ts +26 -0
- package/src/index.ts +2 -0
- package/src/internalChecks.test.ts +136 -0
- package/tsconfig.json +4 -1
package/.changelog.draft
CHANGED
package/.release-it.json
CHANGED
|
@@ -4,10 +4,13 @@
|
|
|
4
4
|
},
|
|
5
5
|
"hooks": {
|
|
6
6
|
"after:bump": [
|
|
7
|
+
"node -e \"const fs=require('fs');const m=JSON.parse(fs.readFileSync('../../mrs.developer.json','utf8'));if(!m.core||!m.core.tag){console.error('Missing mrs.developer core.tag');process.exit(1);}const p=JSON.parse(fs.readFileSync('package.json','utf8'));p.volto_version=m.core.tag;fs.writeFileSync('package.json',JSON.stringify(p,null,2)+'\\n');\"",
|
|
8
|
+
"git add package.json",
|
|
7
9
|
"pipx run towncrier build --draft --yes --version ${version} > .changelog.draft",
|
|
8
10
|
"pipx run towncrier build --yes --version ${version}",
|
|
9
11
|
"cp ../../README.md ./ && cp CHANGELOG.md ../../CHANGELOG.md",
|
|
10
|
-
"
|
|
12
|
+
"python3 -c 'import json; data = json.load(open(\"../../package.json\")); data[\"version\"] = \"${version}\"; json.dump(data, open(\"../../package.json\", \"w\"), indent=2)'",
|
|
13
|
+
"git add ../../CHANGELOG.md ../../package.json"
|
|
11
14
|
],
|
|
12
15
|
"after:release": "rm .changelog.draft README.md"
|
|
13
16
|
},
|
package/CHANGELOG.md
CHANGED
|
@@ -8,6 +8,113 @@
|
|
|
8
8
|
|
|
9
9
|
<!-- towncrier release notes start -->
|
|
10
10
|
|
|
11
|
+
## 2.0.0-alpha.20 (2026-04-30)
|
|
12
|
+
|
|
13
|
+
### Bugfix
|
|
14
|
+
|
|
15
|
+
- Update to Volto 19a32.
|
|
16
|
+
https://github.com/plone/volto/releases/tag/19.0.0-alpha.32 @sneridagh
|
|
17
|
+
|
|
18
|
+
## 2.0.0-alpha.19 (2026-04-30)
|
|
19
|
+
|
|
20
|
+
### Bugfix
|
|
21
|
+
|
|
22
|
+
- Upgrade Volto 19a31 and VLT 8a24.
|
|
23
|
+
https://github.com/kitconcept/volto-light-theme/releases/tag/8.0.0a24 @sneridagh
|
|
24
|
+
|
|
25
|
+
## 2.0.0-alpha.18 (2026-04-22)
|
|
26
|
+
|
|
27
|
+
## 2.0.0-alpha.17 (2026-04-22)
|
|
28
|
+
|
|
29
|
+
### Internal
|
|
30
|
+
|
|
31
|
+
- Rerelease of 2a16. @sneridagh
|
|
32
|
+
|
|
33
|
+
## 2.0.0-alpha.16 (2026-04-21)
|
|
34
|
+
|
|
35
|
+
## 2.0.0-alpha.15 (2026-04-21)
|
|
36
|
+
|
|
37
|
+
### Bugfix
|
|
38
|
+
|
|
39
|
+
- Update to volto-light-theme 8.0.0a20 (footer improvements). @davisagli
|
|
40
|
+
|
|
41
|
+
## 2.0.0-alpha.14 (2026-04-17)
|
|
42
|
+
|
|
43
|
+
### Bugfix
|
|
44
|
+
|
|
45
|
+
- Update VLT 8a19 and Volto 19a29. @sneridagh
|
|
46
|
+
|
|
47
|
+
## 2.0.0-alpha.13 (2026-03-31)
|
|
48
|
+
|
|
49
|
+
### Feature
|
|
50
|
+
|
|
51
|
+
- Add ContactList block. @iFlameing
|
|
52
|
+
- See https://github.com/kitconcept/kitconcept-core/releases/tag/2.0.0a14 @sneridagh
|
|
53
|
+
|
|
54
|
+
## 2.0.0-alpha.12 (2026-03-09)
|
|
55
|
+
|
|
56
|
+
### Feature
|
|
57
|
+
|
|
58
|
+
- Added add-on @plone-collective/volto-image-editor. @sneridagh
|
|
59
|
+
|
|
60
|
+
## 2.0.0-alpha.11 (2026-03-04)
|
|
61
|
+
|
|
62
|
+
### Feature
|
|
63
|
+
|
|
64
|
+
- Update to VLT 8a17.
|
|
65
|
+
See https://github.com/kitconcept/volto-light-theme/releases/tag/8.0.0a17 @sneridagh [#vlt8a17](https://github.com/kitconcept/kitconcept-website/issue/vlt8a17)
|
|
66
|
+
|
|
67
|
+
### Internal
|
|
68
|
+
|
|
69
|
+
- Added command for upgrading dependencies. @davisagli @sneridagh
|
|
70
|
+
|
|
71
|
+
## 2.0.0-alpha.10 (2026-02-16)
|
|
72
|
+
|
|
73
|
+
### Bugfix
|
|
74
|
+
|
|
75
|
+
- Update to core 2a10.
|
|
76
|
+
See https://github.com/kitconcept/kitconcept-core/releases/tag/2.0.0a10 @sneridagh
|
|
77
|
+
|
|
78
|
+
## 2.0.0-alpha.9 (2026-02-09)
|
|
79
|
+
|
|
80
|
+
## 2.0.0-alpha.8 (2026-02-06)
|
|
81
|
+
|
|
82
|
+
### Bugfix
|
|
83
|
+
|
|
84
|
+
- Volto 19a23, core 2a9, VLT8a15 @sneridagh
|
|
85
|
+
|
|
86
|
+
## 2.0.0-alpha.7 (2026-01-22)
|
|
87
|
+
|
|
88
|
+
### Internal
|
|
89
|
+
|
|
90
|
+
- Update to core 2a8.
|
|
91
|
+
See https://github.com/kitconcept/kitconcept-core/releases/tag/2.0.0a8 @sneridagh [#core2a8](https://github.com/kitconcept/kitconcept-website/issue/core2a8)
|
|
92
|
+
|
|
93
|
+
## 2.0.0-alpha.6 (2025-12-08)
|
|
94
|
+
|
|
95
|
+
### Feature
|
|
96
|
+
|
|
97
|
+
- Update to core 2a5:
|
|
98
|
+
https://github.com/kitconcept/kitconcept-core/releases/tag/2.0.0a5 @sneridagh
|
|
99
|
+
|
|
100
|
+
## 2.0.0-alpha.5 (2025-12-01)
|
|
101
|
+
|
|
102
|
+
### Internal
|
|
103
|
+
|
|
104
|
+
- Several fixes. Update core 2a4. @sneridagh
|
|
105
|
+
|
|
106
|
+
## 2.0.0-alpha.4 (2025-11-29)
|
|
107
|
+
|
|
108
|
+
### Internal
|
|
109
|
+
|
|
110
|
+
- Update to core 2a3. @sneridagh
|
|
111
|
+
|
|
112
|
+
## 2.0.0-alpha.3 (2025-11-14)
|
|
113
|
+
|
|
114
|
+
### Internal
|
|
115
|
+
|
|
116
|
+
- Added `@plone/volto-form-block` to the party. @sneridagh
|
|
117
|
+
|
|
11
118
|
## 2.0.0-alpha.2 (2025-11-14)
|
|
12
119
|
|
|
13
120
|
## 2.0.0-alpha.1 (2025-11-14)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kitconcept/website",
|
|
3
|
-
"version": "2.0.0-alpha.
|
|
3
|
+
"version": "2.0.0-alpha.20",
|
|
4
4
|
"description": "A CMS solution for public websites. Created by kitconcept.",
|
|
5
5
|
"main": "src/index.ts",
|
|
6
6
|
"license": "MIT",
|
|
@@ -32,14 +32,16 @@
|
|
|
32
32
|
"release-it": "^19.0.5",
|
|
33
33
|
"typescript": "^5.7.3",
|
|
34
34
|
"vitest": "^3.1.2",
|
|
35
|
-
"@plone/
|
|
36
|
-
"@plone/
|
|
35
|
+
"@plone/types": "2.0.0-alpha.17",
|
|
36
|
+
"@plone/scripts": "4.0.0-alpha.6"
|
|
37
37
|
},
|
|
38
38
|
"addons": [
|
|
39
39
|
"@eeacms/volto-accordion-block",
|
|
40
40
|
"@kitconcept/volto-banner-block",
|
|
41
41
|
"@kitconcept/volto-bm3-compat",
|
|
42
42
|
"@kitconcept/volto-button-block",
|
|
43
|
+
"@kitconcept/volto-calendar-block",
|
|
44
|
+
"@kitconcept/volto-contact-block",
|
|
43
45
|
"@kitconcept/volto-carousel-block",
|
|
44
46
|
"@kitconcept/volto-dsgvo-banner",
|
|
45
47
|
"@kitconcept/volto-heading-block",
|
|
@@ -49,26 +51,33 @@
|
|
|
49
51
|
"@kitconcept/volto-separator-block",
|
|
50
52
|
"@kitconcept/volto-slider-block",
|
|
51
53
|
"@plonegovbr/volto-social-media",
|
|
54
|
+
"@plone/volto-form-block",
|
|
55
|
+
"@plone-collective/volto-image-editor",
|
|
52
56
|
"@kitconcept/volto-light-theme",
|
|
53
57
|
"@kitconcept/core"
|
|
54
58
|
],
|
|
55
59
|
"dependencies": {
|
|
56
60
|
"@eeacms/volto-accordion-block": "^10.4.6",
|
|
57
61
|
"@plonegovbr/volto-social-media": "^3.0.0-alpha.0",
|
|
58
|
-
"@
|
|
59
|
-
"@
|
|
60
|
-
"@kitconcept/core": "2.0.0-alpha.
|
|
61
|
-
"@kitconcept/volto-
|
|
62
|
-
"@kitconcept/volto-
|
|
63
|
-
"@kitconcept/volto-
|
|
62
|
+
"@plone/volto-form-block": "^1.0.0-alpha.0",
|
|
63
|
+
"@plone-collective/volto-image-editor": "1.0.1",
|
|
64
|
+
"@kitconcept/core": "2.0.0-alpha.14",
|
|
65
|
+
"@kitconcept/volto-banner-block": "1.2.0",
|
|
66
|
+
"@kitconcept/volto-light-theme": "8.0.0-alpha.24",
|
|
67
|
+
"@kitconcept/volto-calendar-block": "1.0.0-alpha.8",
|
|
68
|
+
"@kitconcept/volto-contact-block": "1.0.0-alpha.5",
|
|
64
69
|
"@kitconcept/volto-dsgvo-banner": "3.0.1",
|
|
65
|
-
"@kitconcept/volto-
|
|
66
|
-
"@kitconcept/volto-
|
|
67
|
-
"@kitconcept/volto-heading-block": "2.5.0",
|
|
68
|
-
"@kitconcept/volto-logos-block": "4.0.0-alpha.0",
|
|
70
|
+
"@kitconcept/volto-button-block": "5.0.0-alpha.2",
|
|
71
|
+
"@kitconcept/volto-highlight-block": "4.5.1",
|
|
69
72
|
"@kitconcept/volto-separator-block": "5.0.0-alpha.0",
|
|
70
|
-
"@kitconcept/volto-
|
|
73
|
+
"@kitconcept/volto-heading-block": "2.5.0",
|
|
74
|
+
"@kitconcept/volto-bm3-compat": "1.0.0-alpha.1",
|
|
75
|
+
"@kitconcept/volto-carousel-block": "3.0.0-alpha.1",
|
|
76
|
+
"@kitconcept/volto-introduction-block": "1.4.1",
|
|
77
|
+
"@kitconcept/volto-logos-block": "4.0.0-alpha.1",
|
|
78
|
+
"@kitconcept/volto-slider-block": "7.0.0-alpha.1"
|
|
71
79
|
},
|
|
80
|
+
"volto_version": "19.0.0-alpha.32",
|
|
72
81
|
"scripts": {
|
|
73
82
|
"i18n": "rm -rf build/messages && NODE_ENV=production i18n --addon",
|
|
74
83
|
"dry-release": "release-it --dry-run",
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { defaultStylingSchema } from '@kitconcept/volto-light-theme/components/Blocks/schema';
|
|
2
|
+
import type { JSONSchema, SchemaEnhancerArgs } from '@plone/types';
|
|
3
|
+
export const ContactListStylingSchema = ({
|
|
4
|
+
schema,
|
|
5
|
+
formData,
|
|
6
|
+
intl,
|
|
7
|
+
}: SchemaEnhancerArgs): JSONSchema => {
|
|
8
|
+
defaultStylingSchema({ schema, formData, intl });
|
|
9
|
+
|
|
10
|
+
return schema;
|
|
11
|
+
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { ConfigType } from '@plone/registry';
|
|
2
|
+
import type { StyleDefinition } from '@plone/types';
|
|
3
|
+
import { ContactListStylingSchema } from '../components/Blocks/ContactList/schema';
|
|
4
|
+
|
|
5
|
+
declare module '@plone/types' {
|
|
6
|
+
export interface BlocksConfigData {
|
|
7
|
+
contactList: BlockConfigBase;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export interface BlockConfigBase {
|
|
11
|
+
themes?: StyleDefinition[];
|
|
12
|
+
templates: {
|
|
13
|
+
[key: string]: {
|
|
14
|
+
label: string;
|
|
15
|
+
template: any;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export default function install(config: ConfigType) {
|
|
22
|
+
config.blocks.blocksConfig.contactList.schemaEnhancer =
|
|
23
|
+
ContactListStylingSchema;
|
|
24
|
+
|
|
25
|
+
return config;
|
|
26
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { ConfigType } from '@plone/registry';
|
|
2
2
|
import installSettings from './config/settings';
|
|
3
|
+
import installBlocks from './config/blocks';
|
|
3
4
|
|
|
4
5
|
const applyConfig = (config: ConfigType) => {
|
|
5
6
|
installSettings(config);
|
|
7
|
+
installBlocks(config);
|
|
6
8
|
return config;
|
|
7
9
|
};
|
|
8
10
|
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { fileURLToPath } from 'node:url';
|
|
4
|
+
import { describe, expect, it } from 'vitest';
|
|
5
|
+
|
|
6
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
7
|
+
const __dirname = path.dirname(__filename);
|
|
8
|
+
|
|
9
|
+
const recommendedAddonsPath = path.resolve(
|
|
10
|
+
__dirname,
|
|
11
|
+
'../../..',
|
|
12
|
+
'packages/volto-light-theme/recommendedAddons.json',
|
|
13
|
+
);
|
|
14
|
+
const mrsDeveloperPath = path.resolve(
|
|
15
|
+
__dirname,
|
|
16
|
+
'../../..',
|
|
17
|
+
'mrs.developer.json',
|
|
18
|
+
);
|
|
19
|
+
const intranetPackagePath = path.resolve(__dirname, '..', 'package.json');
|
|
20
|
+
|
|
21
|
+
const readJSON = <T>(filePath: string): T =>
|
|
22
|
+
JSON.parse(fs.readFileSync(filePath, 'utf-8'));
|
|
23
|
+
|
|
24
|
+
const normalizeVersion = (version: unknown) =>
|
|
25
|
+
typeof version === 'string' ? version.replace(/^[\\^~]/, '') : version;
|
|
26
|
+
|
|
27
|
+
const excludedPackages = new Set([
|
|
28
|
+
'@eeacms/volto-accordion-block',
|
|
29
|
+
'@plonegovbr/volto-social-media',
|
|
30
|
+
]);
|
|
31
|
+
|
|
32
|
+
describe('internal checks', () => {
|
|
33
|
+
it('keeps recommended add-ons in sync with mrs.developer.json and intranet package.json', () => {
|
|
34
|
+
const recommendedAddons = readJSON<Record<string, string>>(
|
|
35
|
+
recommendedAddonsPath,
|
|
36
|
+
);
|
|
37
|
+
const mrsDeveloper = readJSON<Record<string, unknown>>(mrsDeveloperPath);
|
|
38
|
+
const intranetPackage = readJSON<{
|
|
39
|
+
dependencies?: Record<string, string>;
|
|
40
|
+
addons?: string[];
|
|
41
|
+
}>(intranetPackagePath);
|
|
42
|
+
|
|
43
|
+
const mrsByPackage = Object.entries(mrsDeveloper).reduce<
|
|
44
|
+
Record<
|
|
45
|
+
string,
|
|
46
|
+
Record<string, unknown> & { configKey: string; package?: string }
|
|
47
|
+
>
|
|
48
|
+
>((acc, [configKey, configValue]) => {
|
|
49
|
+
if (
|
|
50
|
+
configValue &&
|
|
51
|
+
typeof configValue === 'object' &&
|
|
52
|
+
'package' in configValue
|
|
53
|
+
) {
|
|
54
|
+
acc[String((configValue as Record<string, unknown>).package)] = {
|
|
55
|
+
...(configValue as Record<string, unknown>),
|
|
56
|
+
configKey,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
return acc;
|
|
60
|
+
}, {});
|
|
61
|
+
|
|
62
|
+
const issues: string[] = [];
|
|
63
|
+
const intranetDependencies = intranetPackage.dependencies || {};
|
|
64
|
+
const intranetAddons = intranetPackage.addons || [];
|
|
65
|
+
|
|
66
|
+
Object.entries(recommendedAddons).forEach(
|
|
67
|
+
([packageName, recommendedVersion]) => {
|
|
68
|
+
if (excludedPackages.has(packageName)) return;
|
|
69
|
+
|
|
70
|
+
const mrsEntry = mrsByPackage[packageName];
|
|
71
|
+
|
|
72
|
+
if (!mrsEntry) {
|
|
73
|
+
issues.push(
|
|
74
|
+
`${packageName} is listed in recommendedAddons.json but missing from frontend/mrs.developer.json.`,
|
|
75
|
+
);
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
const mrsVersion =
|
|
80
|
+
(mrsEntry.tag as string | undefined) ||
|
|
81
|
+
(mrsEntry.branch as string | undefined) ||
|
|
82
|
+
(mrsEntry.version as string | undefined);
|
|
83
|
+
|
|
84
|
+
if (!mrsVersion) {
|
|
85
|
+
issues.push(
|
|
86
|
+
`${packageName} (${mrsEntry.configKey}) has no tag, branch, or version specified in frontend/mrs.developer.json.`,
|
|
87
|
+
);
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
const normalizedRecommended = normalizeVersion(recommendedVersion);
|
|
92
|
+
const normalizedMrsVersion = normalizeVersion(mrsVersion);
|
|
93
|
+
|
|
94
|
+
if (
|
|
95
|
+
recommendedVersion !== mrsVersion &&
|
|
96
|
+
normalizedRecommended !== normalizedMrsVersion
|
|
97
|
+
) {
|
|
98
|
+
issues.push(
|
|
99
|
+
`${packageName} differs: recommendedAddons.json=${recommendedVersion} vs frontend/mrs.developer.json(${mrsEntry.configKey})=${mrsVersion}.`,
|
|
100
|
+
);
|
|
101
|
+
}
|
|
102
|
+
},
|
|
103
|
+
);
|
|
104
|
+
|
|
105
|
+
Object.entries(recommendedAddons).forEach(([packageName]) => {
|
|
106
|
+
if (excludedPackages.has(packageName)) return;
|
|
107
|
+
|
|
108
|
+
const dependencyVersion = intranetDependencies[packageName];
|
|
109
|
+
|
|
110
|
+
if (!dependencyVersion) {
|
|
111
|
+
issues.push(
|
|
112
|
+
`${packageName} is listed in recommendedAddons.json but missing from frontend/packages/kitconcept-website/package.json dependencies.`,
|
|
113
|
+
);
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
if (dependencyVersion !== 'workspace:*') {
|
|
118
|
+
issues.push(
|
|
119
|
+
`${packageName} is pinned to a specific version in frontend/packages/kitconcept-website/package.json dependencies; expected 'workspace:*'.`,
|
|
120
|
+
);
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
|
|
124
|
+
Object.keys(recommendedAddons).forEach((packageName) => {
|
|
125
|
+
if (excludedPackages.has(packageName)) return;
|
|
126
|
+
|
|
127
|
+
if (!intranetAddons.includes(packageName)) {
|
|
128
|
+
issues.push(
|
|
129
|
+
`${packageName} is listed in recommendedAddons.json but missing from frontend/packages/kitconcept-website/package.json addons.`,
|
|
130
|
+
);
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
|
|
134
|
+
expect(issues).toEqual([]);
|
|
135
|
+
});
|
|
136
|
+
});
|
package/tsconfig.json
CHANGED
|
@@ -17,7 +17,10 @@
|
|
|
17
17
|
"jsx": "react-jsx",
|
|
18
18
|
"paths": {
|
|
19
19
|
"@plone/volto/*": ["../../core/packages/volto/src/*"],
|
|
20
|
-
"@kitconcept/website/*": ["./src/*"]
|
|
20
|
+
"@kitconcept/website/*": ["./src/*"],
|
|
21
|
+
"@kitconcept/volto-light-theme/*": [
|
|
22
|
+
"./node_modules/@kitconcept/volto-light-theme/src/*"
|
|
23
|
+
]
|
|
21
24
|
}
|
|
22
25
|
},
|
|
23
26
|
"include": ["src", "src/**/*.js"],
|