@kitconcept/website 1.0.0-alpha.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.
@@ -0,0 +1,11 @@
1
+ ## 1.0.0-alpha.1 (2025-09-04)
2
+
3
+ ### Feature
4
+
5
+ - Initial release of @kitconcept/website. @ericof
6
+
7
+ ### Internal
8
+
9
+ - Rename the package to @kitconcept/website. @ericof
10
+
11
+
@@ -0,0 +1,21 @@
1
+ {
2
+ "hooks": {
3
+ "after:bump": [
4
+ "pipx run towncrier build --draft --yes --version ${version} > .changelog.draft",
5
+ "pipx run towncrier build --yes --version ${version}",
6
+ "cp ../../README.md ./ && cp CHANGELOG.md ../../CHANGELOG.md",
7
+ "git add ../../CHANGELOG.md"
8
+ ],
9
+ "after:release": "rm .changelog.draft README.md"
10
+ },
11
+ "git": {
12
+ "changelog": "pipx run towncrier build --draft --yes --version 0.0.0",
13
+ "commit": false,
14
+ "tag": false
15
+ },
16
+ "github": {
17
+ "release": false,
18
+ "releaseName": "${version}",
19
+ "releaseNotes": "cat .changelog.draft"
20
+ }
21
+ }
package/CHANGELOG.md ADDED
@@ -0,0 +1,19 @@
1
+ # Changelog
2
+
3
+ <!-- You should *NOT* be adding new change log entries to this file.
4
+ You should create a file in the news directory instead.
5
+ For helpful instructions, please see:
6
+ https://6.docs.plone.org/volto/developer-guidelines/contributing.html#create-a-pull-request
7
+ -->
8
+
9
+ <!-- towncrier release notes start -->
10
+
11
+ ## 1.0.0-alpha.1 (2025-09-04)
12
+
13
+ ### Feature
14
+
15
+ - Initial release of @kitconcept/website. @ericof
16
+
17
+ ### Internal
18
+
19
+ - Rename the package to @kitconcept/website. @ericof
package/README.md ADDED
@@ -0,0 +1,197 @@
1
+ # kitconcept Site (@kitconcept/website)
2
+
3
+ A CMS solution for public websites. Created by kitconcept.
4
+
5
+ [![npm](https://img.shields.io/npm/v/website)](https://www.npmjs.com/package/website)
6
+ [![](https://img.shields.io/badge/-Storybook-ff4785?logo=Storybook&logoColor=white&style=flat-square)](https://kitconcept.github.io/website/)
7
+ [![Code analysis checks](https://github.com/kitconcept/website/actions/workflows/code.yml/badge.svg)](https://github.com/kitconcept/website/actions/workflows/code.yml)
8
+ [![Unit tests](https://github.com/kitconcept/website/actions/workflows/unit.yml/badge.svg)](https://github.com/kitconcept/website/actions/workflows/unit.yml)
9
+
10
+ ## Features
11
+
12
+ <!-- List your awesome features here -->
13
+
14
+ ## Installation
15
+
16
+ To install your project, you must choose the method appropriate to your version of Volto.
17
+
18
+
19
+ ### Volto 17 and earlier
20
+
21
+ Create a new Volto project (you can skip this step if you already have one):
22
+
23
+ ```
24
+ npm install -g yo @plone/generator-volto
25
+ yo @plone/volto my-volto-project --addon website
26
+ cd my-volto-project
27
+ ```
28
+
29
+ Add `website` to your package.json:
30
+
31
+ ```JSON
32
+ "addons": [
33
+ "website"
34
+ ],
35
+
36
+ "dependencies": {
37
+ "website": "*"
38
+ }
39
+ ```
40
+
41
+ Download and install the new add-on by running:
42
+
43
+ ```
44
+ yarn install
45
+ ```
46
+
47
+ Start volto with:
48
+
49
+ ```
50
+ yarn start
51
+ ```
52
+
53
+ ### Volto 18 and later
54
+
55
+ Add `website` to your `package.json`:
56
+
57
+ ```json
58
+ "dependencies": {
59
+ "website": "*"
60
+ }
61
+ ```
62
+
63
+ Add `website` to your `volto.config.js`:
64
+
65
+ ```javascript
66
+ const addons = ['website'];
67
+ ```
68
+
69
+ If this package provides a Volto theme, and you want to activate it, then add the following to your `volto.config.js`:
70
+
71
+ ```javascript
72
+ const theme = 'website';
73
+ ```
74
+
75
+ ## Test installation
76
+
77
+ Visit http://localhost:3000/ in a browser, login, and check the awesome new features.
78
+
79
+
80
+ ## Development
81
+
82
+ The development of this add-on is done in isolation using a new approach using pnpm workspaces and latest `mrs-developer` and other Volto core improvements.
83
+ For this reason, it only works with pnpm and Volto 18 (currently in alpha).
84
+
85
+
86
+ ### Pre-requisites
87
+
88
+ - [Node.js](https://6.docs.plone.org/install/create-project.html#node-js)
89
+ - [Make](https://6.docs.plone.org/install/create-project.html#make)
90
+ - [Docker](https://6.docs.plone.org/install/create-project.html#docker)
91
+
92
+
93
+ ### Make convenience commands
94
+
95
+ Run `make help` to list the available commands.
96
+
97
+ ```text
98
+ help Show this help
99
+ install Installs the dev environment using mrs-developer
100
+ i18n Sync i18n
101
+ format Format codebase
102
+ lint Lint Codebase
103
+ test Run unit tests
104
+ test-ci Run unit tests in CI
105
+ storybook-start Start Storybook server on port 6006
106
+ storybook-build Build Storybook
107
+ start-backend-docker Starts a Docker-based backend for developing
108
+ start-test-acceptance-frontend-dev Start acceptance frontend in dev mode
109
+ start-test-acceptance-frontend Start acceptance frontend in prod mode
110
+ start-test-acceptance-server Start acceptance server
111
+ test-acceptance Start Cypress in interactive mode
112
+ test-acceptance-headless Run cypress tests in headless mode for CI
113
+ ```
114
+
115
+ ### Development environment set up
116
+
117
+ Install package requirements.
118
+
119
+ ```shell
120
+ make install
121
+ ```
122
+
123
+ ### Start developing
124
+
125
+ Start the backend.
126
+
127
+ ```shell
128
+ make backend-start-docker
129
+ ```
130
+
131
+ In a separate terminal session, start the frontend.
132
+
133
+ ```shell
134
+ pnpm start
135
+ ```
136
+
137
+ ### Lint code
138
+
139
+ Run ESlint, Prettier, and Stylelint in analyze mode.
140
+
141
+ ```shell
142
+ make lint
143
+ ```
144
+
145
+ ### Format code
146
+
147
+ Run ESlint, Prettier, and Stylelint in fix mode.
148
+
149
+ ```shell
150
+ make format
151
+ ```
152
+
153
+ ### i18n
154
+
155
+ Extract the i18n messages to locales.
156
+
157
+ ```shell
158
+ make i18n
159
+ ```
160
+
161
+ ### Unit tests
162
+
163
+ Run unit tests.
164
+
165
+ ```shell
166
+ make test
167
+ ```
168
+
169
+ ### Run Cypress tests
170
+
171
+ Run each of these steps in separate terminal sessions.
172
+
173
+ In the first session, start the frontend in development mode.
174
+
175
+ ```shell
176
+ make start-test-acceptance-frontend-dev
177
+ ```
178
+
179
+ In the second session, start the backend acceptance server.
180
+
181
+ ```shell
182
+ make start-test-acceptance-server
183
+ ```
184
+
185
+ In the third session, start the Cypress interactive test runner.
186
+
187
+ ```shell
188
+ make test-acceptance
189
+ ```
190
+
191
+ ## License
192
+
193
+ The project is licensed under the MIT license.
194
+
195
+ ## Credits and Acknowledgements 🙏
196
+
197
+ Crafted with care by **This was generated by [cookiecutter-volto](https://github.com/plone/cookiecutter-volto/frontend_addon) on 2024-05-28 22:07:18**. A special thanks to all contributors and supporters!
@@ -0,0 +1,17 @@
1
+ module.exports = function (api) {
2
+ api.cache(true);
3
+ const presets = ['razzle'];
4
+ const plugins = [
5
+ [
6
+ 'react-intl', // React Intl extractor, required for the whole i18n infrastructure to work
7
+ {
8
+ messagesDir: './build/messages/',
9
+ },
10
+ ],
11
+ ];
12
+
13
+ return {
14
+ plugins,
15
+ presets,
16
+ };
17
+ };
@@ -0,0 +1,14 @@
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: \n"
4
+ "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: \n"
6
+ "PO-Revision-Date: \n"
7
+ "Last-Translator: \n"
8
+ "Language: de\n"
9
+ "Language-Team: \n"
10
+ "Content-Type: \n"
11
+ "Content-Transfer-Encoding: \n"
12
+ "Plural-Forms: \n"
13
+
14
+
@@ -0,0 +1,14 @@
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: \n"
4
+ "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: \n"
6
+ "PO-Revision-Date: \n"
7
+ "Last-Translator: \n"
8
+ "Language: en\n"
9
+ "Language-Team: \n"
10
+ "Content-Type: \n"
11
+ "Content-Transfer-Encoding: \n"
12
+ "Plural-Forms: \n"
13
+
14
+
@@ -0,0 +1,21 @@
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: Plone\n"
4
+ "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2023-05-09 11:45-0400\n"
6
+ "PO-Revision-Date: 2023-05-10 11:34-0400\n"
7
+ "Last-Translator: Leonardo J. Caballero G. <leonardocaballero@gmail.com>\n"
8
+ "Language: es\n"
9
+ "Language-Team: ES <LL@li.org>\n"
10
+ "Content-Type: text/plain; charset=utf-8\n"
11
+ "Content-Transfer-Encoding: 8bit\n"
12
+ "Plural-Forms: nplurals=2; plural=(n != 1);\n"
13
+ "Preferred-Encodings: utf-8\n"
14
+ "MIME-Version: 1.0\n"
15
+ "Language-Code: es\n"
16
+ "Language-Name: Español\n"
17
+ "Domain: volto\n"
18
+ "X-Is-Fallback-For: es-ar es-bo es-cl es-co es-cr es-do es-ec es-es es-sv es-gt es-hn es-mx es-ni es-pa es-py es-pe es-pr es-us es-uy es-ve\n"
19
+ "X-Generator: Poedit 2.2.1\n"
20
+
21
+
@@ -0,0 +1,19 @@
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: Plone\n"
4
+ "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2023-04-06T16:01:32.969Z\n"
6
+ "PO-Revision-Date: \n"
7
+ "Last-Translator: Plone i18n <plone-i18n@lists.sourceforge.net>\n"
8
+ "Language: \n"
9
+ "Language-Team: Plone i18n <plone-i18n@lists.sourceforge.net>\n"
10
+ "Content-Type: text/plain; charset=utf-8\n"
11
+ "Content-Transfer-Encoding: 8bit\n"
12
+ "Plural-Forms: nplurals=1; plural=0;\n"
13
+ "MIME-Version: 1.0\n"
14
+ "Language-Code: pt_BR\n"
15
+ "Language-Name: Português do Brasil\n"
16
+ "Preferred-Encodings: utf-8\n"
17
+ "Domain: volto\n"
18
+
19
+
@@ -0,0 +1,16 @@
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: Plone\n"
4
+ "POT-Creation-Date: 2024-06-24T18:49:09.950Z\n"
5
+ "Last-Translator: Plone i18n <plone-i18n@lists.sourceforge.net>\n"
6
+ "Language-Team: Plone i18n <plone-i18n@lists.sourceforge.net>\n"
7
+ "Content-Type: text/plain; charset=utf-8\n"
8
+ "Content-Transfer-Encoding: 8bit\n"
9
+ "Plural-Forms: nplurals=1; plural=0;\n"
10
+ "MIME-Version: 1.0\n"
11
+ "Language-Code: en\n"
12
+ "Language-Name: English\n"
13
+ "Preferred-Encodings: utf-8\n"
14
+ "Domain: volto\n"
15
+
16
+
package/news/.gitkeep ADDED
File without changes
package/package.json ADDED
@@ -0,0 +1,49 @@
1
+ {
2
+ "name": "@kitconcept/website",
3
+ "version": "1.0.0-alpha.1",
4
+ "description": "A CMS solution for public websites. Created by kitconcept.",
5
+ "main": "src/index.ts",
6
+ "license": "MIT",
7
+ "keywords": [
8
+ "volto-addon",
9
+ "volto",
10
+ "plone",
11
+ "react"
12
+ ],
13
+ "author": "kitconcept GmbH",
14
+ "homepage": "https://github.com/kitconcept/kitconcept-website#readme",
15
+ "repository": {
16
+ "type": "git",
17
+ "url": "git@github.com:kitconcept/kitconcept-website.git"
18
+ },
19
+ "publishConfig": {
20
+ "access": "public"
21
+ },
22
+ "scripts": {
23
+ "i18n": "rm -rf build/messages && NODE_ENV=production i18n --addon",
24
+ "dry-release": "release-it --dry-run",
25
+ "release": "release-it",
26
+ "release-major-alpha": "release-it major --preRelease=alpha",
27
+ "release-alpha": "release-it --preRelease=alpha"
28
+ },
29
+ "peerDependencies": {
30
+ "react": "18.2.0",
31
+ "react-dom": "18.2.0",
32
+ "react-intl": "^3.12.1",
33
+ "react-redux": "^8.1.2"
34
+ },
35
+ "devDependencies": {
36
+ "@plone/scripts": "workspace:*",
37
+ "@plone/types": "workspace:*",
38
+ "@types/react": "^18.3.12",
39
+ "@types/react-dom": "^18.3.1",
40
+ "release-it": "^17.7.0"
41
+ },
42
+ "addons": [
43
+ "@kitconcept/core"
44
+ ],
45
+ "dependencies": {
46
+ "@plone/components": "workspace:*",
47
+ "@kitconcept/core": "1.0.0-alpha.22"
48
+ }
49
+ }
File without changes
@@ -0,0 +1,13 @@
1
+ import { ConfigType } from '@plone/registry';
2
+
3
+ export default function install(config: ConfigType) {
4
+ config.settings.isMultilingual = false;
5
+ config.settings.supportedLanguages = ['en'];
6
+ config.settings.defaultLanguage = 'en';
7
+
8
+ // Volto Light Theme Configuration
9
+ config.settings.siteHeader = true;
10
+ config.settings.siteLabel = 'Site';
11
+
12
+ return config;
13
+ }
@@ -0,0 +1,12 @@
1
+ import { ConfigType } from '@plone/registry';
2
+ import CustomCSS from '../slots/CustomCSS/CustomCSS';
3
+
4
+ export default function install(config: ConfigType) {
5
+ config.registerSlotComponent({
6
+ slot: 'aboveHeader',
7
+ name: 'CustomCSS',
8
+ component: CustomCSS,
9
+ });
10
+
11
+ return config;
12
+ }
package/src/index.ts ADDED
@@ -0,0 +1,17 @@
1
+ import { ConfigType } from '@plone/registry';
2
+ import installSettings from './config/settings';
3
+ import installSlots from './config/slots';
4
+
5
+ declare module '@plone/types' {
6
+ export interface GetSiteResponse {
7
+ 'kitconcept.website.custom_css': string;
8
+ }
9
+ }
10
+
11
+ const applyConfig = (config: ConfigType) => {
12
+ installSettings(config);
13
+ installSlots(config);
14
+ return config;
15
+ };
16
+
17
+ export default applyConfig;
@@ -0,0 +1,22 @@
1
+ import Helmet from '@plone/volto/helpers/Helmet/Helmet';
2
+ import { useSelector } from 'react-redux';
3
+ import type { GetSiteResponse } from '@plone/types';
4
+
5
+ type FormState = {
6
+ site: { data: GetSiteResponse };
7
+ };
8
+
9
+ const CustomCSS = () => {
10
+ const site = useSelector<FormState, GetSiteResponse>(
11
+ (state) => state.site.data,
12
+ );
13
+ const customCSS = site['kitconcept.website.custom_css'];
14
+
15
+ return customCSS ? (
16
+ <Helmet>
17
+ <style>{customCSS}</style>
18
+ </Helmet>
19
+ ) : null;
20
+ };
21
+
22
+ export default CustomCSS;
package/towncrier.toml ADDED
@@ -0,0 +1,38 @@
1
+ [tool.towncrier]
2
+ filename = "CHANGELOG.md"
3
+ directory = "news/"
4
+ title_format = "## {version} ({project_date})"
5
+ underlines = ["", "", ""]
6
+ template = "./node_modules/@plone/scripts/templates/towncrier_template.jinja"
7
+ start_string = "<!-- towncrier release notes start -->\n"
8
+ issue_format = "[#{issue}](https://github.com/kitconcept/kitconcept-website/issue/{issue})"
9
+
10
+ [[tool.towncrier.type]]
11
+ directory = "breaking"
12
+ name = "Breaking"
13
+ showcontent = true
14
+
15
+ [[tool.towncrier.type]]
16
+ directory = "feature"
17
+ name = "Feature"
18
+ showcontent = true
19
+
20
+ [[tool.towncrier.type]]
21
+ directory = "bugfix"
22
+ name = "Bugfix"
23
+ showcontent = true
24
+
25
+ [[tool.towncrier.type]]
26
+ directory = "internal"
27
+ name = "Internal"
28
+ showcontent = true
29
+
30
+ [[tool.towncrier.type]]
31
+ directory = "documentation"
32
+ name = "Documentation"
33
+ showcontent = true
34
+
35
+ [[tool.towncrier.type]]
36
+ directory = "test"
37
+ name = "Test"
38
+ showcontent = true
package/tsconfig.json ADDED
@@ -0,0 +1,33 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ESNext",
4
+ "lib": ["DOM", "DOM.Iterable", "ESNext"],
5
+ "module": "commonjs",
6
+ "allowJs": true,
7
+ "skipLibCheck": true,
8
+ "esModuleInterop": true,
9
+ "allowSyntheticDefaultImports": true,
10
+ "strict": true,
11
+ "forceConsistentCasingInFileNames": true,
12
+ "strictPropertyInitialization": false,
13
+ "moduleResolution": "Node",
14
+ "resolveJsonModule": true,
15
+ "isolatedModules": true,
16
+ "noEmit": true,
17
+ "jsx": "react-jsx",
18
+ "paths": {
19
+ "@plone/volto/*": ["../../core/packages/volto/src/*"],
20
+ "@kitconcept/website/*": ["./src/*"]
21
+ }
22
+ },
23
+ "include": ["src", "src/**/*.js"],
24
+ "exclude": [
25
+ "node_modules",
26
+ "build",
27
+ "public",
28
+ "coverage",
29
+ "src/**/*.test.{js,jsx,ts,tsx}",
30
+ "src/**/*.spec.{js,jsx,ts,tsx}",
31
+ "src/**/*.stories.{js,jsx,ts,tsx}"
32
+ ]
33
+ }