@kitconcept/website 2.0.0-alpha.9 → 2.0.0-beta.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.draft CHANGED
@@ -1,3 +1,7 @@
1
- ## 2.0.0-alpha.9 (2026-02-09)
1
+ ## 2.0.0-beta.2 (2026-06-25)
2
+
3
+ ### Internal
4
+
5
+ - Fix tests for Plone 6.2.0 @sneridagh [#43](https://github.com/kitconcept/kitconcept-website/issue/43)
2
6
 
3
7
 
package/.release-it.json CHANGED
@@ -6,15 +6,16 @@
6
6
  "after:bump": [
7
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
8
  "git add package.json",
9
- "pipx run towncrier build --draft --yes --version ${version} > .changelog.draft",
10
- "pipx run towncrier build --yes --version ${version}",
9
+ "uvx towncrier build --draft --yes --version ${version} > .changelog.draft",
10
+ "uvx towncrier build --yes --version ${version}",
11
11
  "cp ../../README.md ./ && cp CHANGELOG.md ../../CHANGELOG.md",
12
- "git add ../../CHANGELOG.md"
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"
13
14
  ],
14
15
  "after:release": "rm .changelog.draft README.md"
15
16
  },
16
17
  "git": {
17
- "changelog": "pipx run towncrier build --draft --yes --version 0.0.0",
18
+ "changelog": "uvx towncrier build --draft --yes --version 0.0.0",
18
19
  "commit": false,
19
20
  "tag": false
20
21
  },
package/CHANGELOG.md CHANGED
@@ -8,6 +8,139 @@
8
8
 
9
9
  <!-- towncrier release notes start -->
10
10
 
11
+ ## 2.0.0-beta.2 (2026-06-25)
12
+
13
+ ### Internal
14
+
15
+ - Fix tests for Plone 6.2.0 @sneridagh [#43](https://github.com/kitconcept/kitconcept-website/issue/43)
16
+
17
+ ## 2.0.0-beta.1 (2026-06-23)
18
+
19
+ ### Feature
20
+
21
+ - Add Person content type styled @iRohitSingh [#41](https://github.com/kitconcept/kitconcept-website/issue/41)
22
+ - Upgrade kitconcept-core to version 2.0.0-beta.1. @ericof [#66](https://github.com/kitconcept/kitconcept-website/issue/66)
23
+
24
+ ## 2.0.0-alpha.27 (2026-06-12)
25
+
26
+ ### Bugfix
27
+
28
+ - Removes the "View" select from the "More" menu in the Toolbar.
29
+ Upgrade to Volto 19.1.4.
30
+ See https://github.com/plone/volto/releases/tag/19.1.4
31
+ See https://github.com/kitconcept/volto-light-theme/releases/tag/8.0.0a30 @sneridagh
32
+ - Update to VLT and Volto 19.1.2. @sneridagh
33
+
34
+ See https://github.com/plone/volto/releases/tag/19.1.2
35
+ See https://github.com/kitconcept/volto-light-theme/releases/tag/8.0.0a29
36
+
37
+ ## 2.0.0-alpha.26 (2026-06-08)
38
+
39
+ ### Bugfix
40
+
41
+ - Fixed accordion does not work with the "Order" tab. Use `@eea/volto-accordion-block` 12.0.0. @Tishasoumya-02
42
+ - Upgrade Volto 19.1.0 @sneridagh
43
+
44
+ ### Internal
45
+
46
+ - Added acceptance tests infrastructure. @sneridagh [#30](https://github.com/kitconcept/kitconcept-website/issue/30)
47
+
48
+ ## 2.0.0-alpha.25 (2026-05-26)
49
+
50
+ ## 2.0.0-alpha.24 (2026-05-15)
51
+
52
+ ### Bugfix
53
+
54
+ - Update to core 2a18 and VLT 2a28. @sneridagh
55
+
56
+ ## 2.0.0-alpha.23 (2026-05-06)
57
+
58
+ ### Internal
59
+
60
+ - Update to @kitconcept/core 2.0.0a18 (no significant frontend changes). @davisagli
61
+
62
+ ## 2.0.0-alpha.22 (2026-05-06)
63
+
64
+ ### Bugfix
65
+
66
+ - Update to k.core 2a16.
67
+ https://github.com/kitconcept/kitconcept-core/releases/tag/2.0.0a15
68
+ https://github.com/kitconcept/kitconcept-core/releases/tag/2.0.0a16 @sneridagh
69
+
70
+ ## 2.0.0-alpha.21 (2026-05-04)
71
+
72
+ ### Bugfix
73
+
74
+ - Upgrade to Volto 19a33.
75
+ Language fix. @sneridagh
76
+
77
+ ## 2.0.0-alpha.20 (2026-04-30)
78
+
79
+ ### Bugfix
80
+
81
+ - Update to Volto 19a32.
82
+ https://github.com/plone/volto/releases/tag/19.0.0-alpha.32 @sneridagh
83
+
84
+ ## 2.0.0-alpha.19 (2026-04-30)
85
+
86
+ ### Bugfix
87
+
88
+ - Upgrade Volto 19a31 and VLT 8a24.
89
+ https://github.com/kitconcept/volto-light-theme/releases/tag/8.0.0a24 @sneridagh
90
+
91
+ ## 2.0.0-alpha.18 (2026-04-22)
92
+
93
+ ## 2.0.0-alpha.17 (2026-04-22)
94
+
95
+ ### Internal
96
+
97
+ - Rerelease of 2a16. @sneridagh
98
+
99
+ ## 2.0.0-alpha.16 (2026-04-21)
100
+
101
+ ## 2.0.0-alpha.15 (2026-04-21)
102
+
103
+ ### Bugfix
104
+
105
+ - Update to volto-light-theme 8.0.0a20 (footer improvements). @davisagli
106
+
107
+ ## 2.0.0-alpha.14 (2026-04-17)
108
+
109
+ ### Bugfix
110
+
111
+ - Update VLT 8a19 and Volto 19a29. @sneridagh
112
+
113
+ ## 2.0.0-alpha.13 (2026-03-31)
114
+
115
+ ### Feature
116
+
117
+ - Add ContactList block. @iFlameing
118
+ - See https://github.com/kitconcept/kitconcept-core/releases/tag/2.0.0a14 @sneridagh
119
+
120
+ ## 2.0.0-alpha.12 (2026-03-09)
121
+
122
+ ### Feature
123
+
124
+ - Added add-on @plone-collective/volto-image-editor. @sneridagh
125
+
126
+ ## 2.0.0-alpha.11 (2026-03-04)
127
+
128
+ ### Feature
129
+
130
+ - Update to VLT 8a17.
131
+ See https://github.com/kitconcept/volto-light-theme/releases/tag/8.0.0a17 @sneridagh [#vlt8a17](https://github.com/kitconcept/kitconcept-website/issue/vlt8a17)
132
+
133
+ ### Internal
134
+
135
+ - Added command for upgrading dependencies. @davisagli @sneridagh
136
+
137
+ ## 2.0.0-alpha.10 (2026-02-16)
138
+
139
+ ### Bugfix
140
+
141
+ - Update to core 2a10.
142
+ See https://github.com/kitconcept/kitconcept-core/releases/tag/2.0.0a10 @sneridagh
143
+
11
144
  ## 2.0.0-alpha.9 (2026-02-09)
12
145
 
13
146
  ## 2.0.0-alpha.8 (2026-02-06)
package/README.md CHANGED
@@ -194,4 +194,4 @@ The project is licensed under the MIT license.
194
194
 
195
195
  ## Credits and Acknowledgements 🙏
196
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!
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!!
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kitconcept/website",
3
- "version": "2.0.0-alpha.9",
3
+ "version": "2.0.0-beta.2",
4
4
  "description": "A CMS solution for public websites. Created by kitconcept.",
5
5
  "main": "src/index.ts",
6
6
  "license": "MIT",
@@ -32,8 +32,8 @@
32
32
  "release-it": "^19.0.5",
33
33
  "typescript": "^5.7.3",
34
34
  "vitest": "^3.1.2",
35
- "@plone/scripts": "4.0.0-alpha.4",
36
- "@plone/types": "2.0.0-alpha.14"
35
+ "@plone/scripts": "4.0.1",
36
+ "@plone/types": "2.0.0"
37
37
  },
38
38
  "addons": [
39
39
  "@eeacms/volto-accordion-block",
@@ -41,6 +41,7 @@
41
41
  "@kitconcept/volto-bm3-compat",
42
42
  "@kitconcept/volto-button-block",
43
43
  "@kitconcept/volto-calendar-block",
44
+ "@kitconcept/volto-contact-block",
44
45
  "@kitconcept/volto-carousel-block",
45
46
  "@kitconcept/volto-dsgvo-banner",
46
47
  "@kitconcept/volto-heading-block",
@@ -51,29 +52,32 @@
51
52
  "@kitconcept/volto-slider-block",
52
53
  "@plonegovbr/volto-social-media",
53
54
  "@plone/volto-form-block",
55
+ "@plone-collective/volto-image-editor",
54
56
  "@kitconcept/volto-light-theme",
55
57
  "@kitconcept/core"
56
58
  ],
57
59
  "dependencies": {
58
- "@eeacms/volto-accordion-block": "^10.4.6",
60
+ "@eeacms/volto-accordion-block": "^12.0.0",
59
61
  "@plonegovbr/volto-social-media": "^3.0.0-alpha.0",
60
62
  "@plone/volto-form-block": "^1.0.0-alpha.0",
61
- "@kitconcept/core": "2.0.0-alpha.9",
62
- "@kitconcept/volto-button-block": "5.0.0-alpha.0",
63
- "@kitconcept/volto-light-theme": "8.0.0-alpha.15",
64
- "@kitconcept/volto-banner-block": "1.1.0",
63
+ "@plone-collective/volto-image-editor": "1.0.1",
64
+ "@kitconcept/core": "2.0.0-beta.1",
65
+ "@kitconcept/volto-contact-block": "1.0.0-alpha.5",
65
66
  "@kitconcept/volto-bm3-compat": "1.0.0-alpha.1",
66
- "@kitconcept/volto-carousel-block": "3.0.0-alpha.0",
67
+ "@kitconcept/volto-button-block": "5.0.0-alpha.2",
68
+ "@kitconcept/volto-light-theme": "8.0.0-alpha.30",
69
+ "@kitconcept/volto-highlight-block": "5.0.0-alpha.0",
70
+ "@kitconcept/volto-carousel-block": "3.0.0-alpha.1",
71
+ "@kitconcept/volto-banner-block": "1.2.0",
72
+ "@kitconcept/volto-logos-block": "4.0.0-alpha.1",
73
+ "@kitconcept/volto-calendar-block": "1.0.0-alpha.9",
74
+ "@kitconcept/volto-introduction-block": "1.4.1",
67
75
  "@kitconcept/volto-heading-block": "2.5.0",
68
- "@kitconcept/volto-highlight-block": "4.5.1",
69
- "@kitconcept/volto-introduction-block": "1.3.0",
70
- "@kitconcept/volto-logos-block": "4.0.0-alpha.0",
71
76
  "@kitconcept/volto-separator-block": "5.0.0-alpha.0",
72
- "@kitconcept/volto-calendar-block": "1.0.0-alpha.6",
73
- "@kitconcept/volto-slider-block": "7.0.0-alpha.0",
74
- "@kitconcept/volto-dsgvo-banner": "3.0.1"
77
+ "@kitconcept/volto-dsgvo-banner": "4.0.0-alpha.1",
78
+ "@kitconcept/volto-slider-block": "7.0.0-alpha.1"
75
79
  },
76
- "volto_version": "19.0.0-alpha.23",
80
+ "volto_version": "19.1.4",
77
81
  "scripts": {
78
82
  "i18n": "rm -rf build/messages && NODE_ENV=production i18n --addon",
79
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,272 @@
1
+ /**
2
+ * PersonView view component.
3
+ * @module components/theme/View/PersonView
4
+ */
5
+
6
+ import React from 'react';
7
+ import { FormattedMessage } from 'react-intl';
8
+ import config from '@plone/volto/registry';
9
+ import mobilePhoneSVG from '@plone/volto/icons/mobile.svg';
10
+ import officePhoneSVG from '@plone/volto/icons/headset.svg';
11
+ import mailSVG from '@plone/volto/icons/email.svg';
12
+ import worldSVG from '@plone/volto/icons/world.svg';
13
+ import faxSVG from '@plone/volto/icons/printer.svg';
14
+
15
+ import Icon from '@plone/volto/components/theme/Icon/Icon';
16
+
17
+ interface PersonViewProps {
18
+ content: {
19
+ first_name: string;
20
+ last_name?: string;
21
+ description?: string;
22
+ text?: {
23
+ data: string;
24
+ };
25
+ image?: {
26
+ scales?: {
27
+ preview?: {
28
+ download: string;
29
+ };
30
+ };
31
+ download?: string;
32
+ };
33
+ contact_name?: string;
34
+ contact_email?: string;
35
+ contact_phone?: string;
36
+ contact_website?: string;
37
+ contact_building?: string;
38
+ contact_room?: string;
39
+ office_phone?: string;
40
+ fax?: string;
41
+ address?: string;
42
+ };
43
+ }
44
+
45
+ /**
46
+ * PersonView view component class.
47
+ * @function PersonView
48
+ * @params {object} content Content object.
49
+ * @returns {string} Markup of the component.
50
+ */
51
+ const PersonView: React.FC<PersonViewProps> = ({ content }) => {
52
+ const Container = config.getComponent({ name: 'Container' }).component;
53
+ const Image = config.getComponent({ name: 'Image' }).component;
54
+
55
+ const profile = {
56
+ fullName: content.last_name
57
+ ? `${content.first_name} ${content.last_name}`
58
+ : content.first_name,
59
+ };
60
+
61
+ const contact = {
62
+ officePhone: content.office_phone ?? null,
63
+ mobilePhone: content.contact_phone ?? null,
64
+ fax: content.fax ?? null,
65
+ email: content.contact_email ?? null,
66
+ website: content.contact_website ?? null,
67
+ contactBuilding: content.contact_building ?? null,
68
+ contactRoom: content.contact_room ?? null,
69
+ };
70
+
71
+ return (
72
+ <Container id="page-document" className="view-wrapper person-view">
73
+ <div className="person-profile">
74
+ <header className="profile-header">
75
+ {content.image?.download && (
76
+ <Image
77
+ className="profile-image"
78
+ item={content}
79
+ imageField="image"
80
+ alt={profile.fullName}
81
+ />
82
+ )}
83
+
84
+ <div className="profile-info">
85
+ <h1>{profile.fullName}</h1>
86
+ </div>
87
+ </header>
88
+
89
+ {(contact.officePhone ||
90
+ contact.mobilePhone ||
91
+ contact.fax ||
92
+ contact.email ||
93
+ contact.website) && (
94
+ <div className="contact-wrapper">
95
+ <section aria-labelledby="contact-heading">
96
+ <h2 id="contact-heading">
97
+ <FormattedMessage id="Contact" defaultMessage="Contact" />
98
+ </h2>
99
+ <div className="contact-list">
100
+ {contact.officePhone && (
101
+ <div className="contact-item">
102
+ <Icon
103
+ title={
104
+ <FormattedMessage id="Phone" defaultMessage="Phone" />
105
+ }
106
+ name={officePhoneSVG}
107
+ size="36px"
108
+ />
109
+ <a
110
+ href={`tel:${contact.officePhone}`}
111
+ aria-label="Office phone"
112
+ >
113
+ {contact.officePhone}
114
+ </a>
115
+ </div>
116
+ )}
117
+
118
+ {contact.mobilePhone && (
119
+ <div className="contact-item">
120
+ <Icon
121
+ title={
122
+ <FormattedMessage id="Phone" defaultMessage="Phone" />
123
+ }
124
+ name={mobilePhoneSVG}
125
+ size="36px"
126
+ />
127
+ <a
128
+ href={`tel:${contact.mobilePhone}`}
129
+ aria-label="Mobile phone"
130
+ >
131
+ <span aria-label="Mobile phone">
132
+ {contact.mobilePhone}
133
+ </span>
134
+ </a>
135
+ </div>
136
+ )}
137
+
138
+ {contact.fax && (
139
+ <div className="contact-item">
140
+ <Icon
141
+ title={
142
+ <FormattedMessage id="Phone" defaultMessage="Phone" />
143
+ }
144
+ name={faxSVG}
145
+ size="36px"
146
+ />
147
+ <span aria-label="Fax">{contact.fax}</span>
148
+ </div>
149
+ )}
150
+
151
+ {contact.email && (
152
+ <div className="contact-item">
153
+ <Icon
154
+ title={
155
+ <FormattedMessage id="E-mail" defaultMessage="E-mail" />
156
+ }
157
+ name={mailSVG}
158
+ size="36px"
159
+ />
160
+ <a href={`mailto:${contact.email}`} aria-label="Email">
161
+ {contact.email}
162
+ </a>
163
+ </div>
164
+ )}
165
+
166
+ {contact.website && (
167
+ <div className="contact-item">
168
+ <Icon
169
+ title={
170
+ <FormattedMessage id="Site" defaultMessage="Site" />
171
+ }
172
+ name={worldSVG}
173
+ size="36px"
174
+ />
175
+ <a href={contact.website} aria-label="Website">
176
+ {contact.website}
177
+ </a>
178
+ </div>
179
+ )}
180
+ </div>
181
+ </section>
182
+
183
+ {(content.address ||
184
+ contact.contactBuilding ||
185
+ contact.contactRoom) && (
186
+ <section aria-labelledby="address-heading">
187
+ <h2 id="address-heading">
188
+ <FormattedMessage id="Address" defaultMessage="Address" />
189
+ </h2>
190
+ <address>
191
+ <div className="building-room">
192
+ {contact.contactBuilding && (
193
+ <div>
194
+ <FormattedMessage
195
+ id="Building"
196
+ defaultMessage="Building"
197
+ />{' '}
198
+ {contact.contactBuilding}
199
+ {contact.contactRoom && (
200
+ <span>
201
+ {' '}
202
+ /{' '}
203
+ <FormattedMessage
204
+ id="Room"
205
+ defaultMessage="Room"
206
+ />{' '}
207
+ {contact.contactRoom}
208
+ </span>
209
+ )}
210
+ </div>
211
+ )}
212
+ </div>
213
+
214
+ {content.address && (
215
+ <p className="address">{content.address}</p>
216
+ )}
217
+ </address>
218
+ </section>
219
+ )}
220
+ </div>
221
+ )}
222
+
223
+ {content.text && (
224
+ <section className="bio-section" aria-labelledby="bio-heading">
225
+ <h2 id="bio-heading">
226
+ <FormattedMessage id="Bio" defaultMessage="Bio" />
227
+ </h2>
228
+ <div className="bio-content">
229
+ <p dangerouslySetInnerHTML={{ __html: content.text.data }} />
230
+ </div>
231
+ <svg
232
+ className="bio-section-border bio-section-border--desktop"
233
+ viewBox="0 0 948 63"
234
+ fill="none"
235
+ xmlns="http://www.w3.org/2000/svg"
236
+ >
237
+ <path
238
+ d="M0.582031 1H117.744V60.9434L177.688 1H947.416"
239
+ stroke="black"
240
+ />
241
+ </svg>
242
+ <svg
243
+ className="bio-section-border bio-section-border--tablet"
244
+ width="730"
245
+ height="63"
246
+ viewBox="0 0 730 63"
247
+ fill="none"
248
+ xmlns="http://www.w3.org/2000/svg"
249
+ >
250
+ <path d="M0 1H56.7997V60.9434L116.766 1H730" stroke="black" />
251
+ </svg>
252
+ <svg
253
+ className="bio-section-border bio-section-border--mobile"
254
+ width="335"
255
+ height="63"
256
+ viewBox="0 0 335 63"
257
+ fill="none"
258
+ xmlns="http://www.w3.org/2000/svg"
259
+ >
260
+ <path
261
+ d="M0.652344 1H57.4304V60.9434L117.374 1H334.347"
262
+ stroke="black"
263
+ />
264
+ </svg>
265
+ </section>
266
+ )}
267
+ </div>
268
+ </Container>
269
+ );
270
+ };
271
+
272
+ export default PersonView;
@@ -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
+ }
@@ -1,9 +1,7 @@
1
1
  import { ConfigType } from '@plone/registry';
2
2
 
3
3
  export default function install(config: ConfigType) {
4
- config.settings.isMultilingual = false;
5
- config.settings.supportedLanguages = ['en'];
6
- config.settings.defaultLanguage = 'en';
4
+ config.settings.supportedLanguages = ['de', 'en'];
7
5
 
8
6
  // Volto Light Theme Configuration
9
7
  config.settings.siteHeader = true;
package/src/index.ts CHANGED
@@ -1,8 +1,14 @@
1
1
  import { ConfigType } from '@plone/registry';
2
2
  import installSettings from './config/settings';
3
+ import installBlocks from './config/blocks';
4
+ import PersonView from './components/theme/PersonView';
3
5
 
4
6
  const applyConfig = (config: ConfigType) => {
5
7
  installSettings(config);
8
+ installBlocks(config);
9
+
10
+ config.views.contentTypesViews.Person = PersonView;
11
+
6
12
  return config;
7
13
  };
8
14
 
@@ -0,0 +1,6 @@
1
+ @import 'components/person';
2
+
3
+ // Removes the "View" from the "More" menu in the Toolbar.
4
+ .inline.field.field-wrapper-display-select {
5
+ display: none;
6
+ }
@@ -0,0 +1,214 @@
1
+ #page-document.view-wrapper.person-view {
2
+ .person-profile {
3
+ background: var(--accent-color);
4
+ color: var(--accent-foreground-color);
5
+ }
6
+
7
+ header.profile-header,
8
+ .contact-wrapper,
9
+ .bio-section {
10
+ max-width: var(--default-container-width);
11
+ margin: 0 auto;
12
+ }
13
+ }
14
+
15
+ .profile-header {
16
+ display: flex;
17
+ align-items: center;
18
+ padding-top: $spacing-large;
19
+ padding-bottom: $spacing-xlarge;
20
+ border-top: 1px solid var(--accent-foreground-color);
21
+ margin-bottom: $spacing-large;
22
+ gap: $spacing-small;
23
+ }
24
+
25
+ .profile-image {
26
+ width: 300px;
27
+ height: 300px;
28
+ flex-shrink: 0;
29
+ border-radius: 50%;
30
+ object-fit: cover;
31
+ }
32
+
33
+ .profile-info {
34
+ h1 {
35
+ font-size: 48px;
36
+ font-style: normal;
37
+ font-weight: 700;
38
+ line-height: 60px;
39
+ }
40
+ }
41
+
42
+ .contact-wrapper {
43
+ display: grid;
44
+ padding-bottom: $spacing-large;
45
+ gap: $spacing-large;
46
+ grid-template-columns: 1fr 1fr;
47
+ }
48
+
49
+ .contact-wrapper,
50
+ .bio-section {
51
+ h2 {
52
+ padding-bottom: $spacing-small;
53
+ border-bottom: 1px solid var(--accent-foreground-color);
54
+ margin: 0;
55
+ font-size: 18px;
56
+ font-weight: 700;
57
+ letter-spacing: 1px;
58
+ text-transform: uppercase;
59
+ }
60
+ }
61
+
62
+ .contact-list {
63
+ display: flex;
64
+ flex-direction: column;
65
+ padding-top: $spacing-medium;
66
+ gap: $spacing-small;
67
+
68
+ .contact-item {
69
+ display: flex;
70
+ align-items: center;
71
+ gap: 10px;
72
+ svg path {
73
+ fill: var(--accent-foreground-color);
74
+ }
75
+ }
76
+
77
+ a {
78
+ color: inherit;
79
+ text-decoration: underline;
80
+ }
81
+ }
82
+
83
+ address {
84
+ padding-top: $spacing-medium;
85
+ font-style: normal;
86
+
87
+ h3 {
88
+ font-size: 18px;
89
+ font-style: normal;
90
+ font-weight: 700;
91
+ line-height: 24px;
92
+ }
93
+ }
94
+
95
+ .bio-section {
96
+ padding-top: $spacing-large;
97
+ padding-bottom: $spacing-large;
98
+
99
+ .bio-content {
100
+ padding: $spacing-medium 0;
101
+
102
+ p {
103
+ font-size: 24px;
104
+ font-weight: 300;
105
+ line-height: 33px;
106
+ a {
107
+ font: inherit;
108
+ }
109
+ }
110
+ }
111
+ }
112
+
113
+ // Bio section border responsive display
114
+ .bio-section-border--desktop,
115
+ .bio-section-border--tablet,
116
+ .bio-section-border--mobile {
117
+ width: 100%;
118
+ height: auto;
119
+ path {
120
+ stroke: var(--accent-foreground-color);
121
+ }
122
+ }
123
+
124
+ .bio-section-border--desktop {
125
+ display: block;
126
+ }
127
+
128
+ .bio-section-border--tablet,
129
+ .bio-section-border--mobile {
130
+ display: none;
131
+ }
132
+
133
+ @media (max-width: 730px) {
134
+ .bio-section-border--desktop {
135
+ display: none;
136
+ }
137
+ .bio-section-border--tablet {
138
+ display: block;
139
+ }
140
+ }
141
+
142
+ @media (max-width: 980px) {
143
+ .person-profile {
144
+ padding: 0 $spacing-small;
145
+
146
+ .profile-header {
147
+ padding-bottom: $spacing-large;
148
+
149
+ .profile-info {
150
+ h1 {
151
+ margin-top: 25px;
152
+ margin-bottom: $spacing-small;
153
+ font-size: 30px;
154
+ font-weight: $bold;
155
+ line-height: 36px;
156
+ }
157
+ }
158
+ }
159
+
160
+ .profile-image {
161
+ width: 210px;
162
+ height: 210px;
163
+ }
164
+ .contact-wrapper,
165
+ .bio-section {
166
+ padding-bottom: $spacing-large;
167
+
168
+ h2 {
169
+ font-size: 14px;
170
+ line-height: 18px;
171
+ }
172
+ }
173
+ .bio-section {
174
+ padding-top: 30px;
175
+ }
176
+ }
177
+ }
178
+
179
+ @media (max-width: 500px) {
180
+ .bio-section-border--tablet {
181
+ display: none;
182
+ }
183
+ .bio-section-border--mobile {
184
+ display: block;
185
+ }
186
+ }
187
+
188
+ @media (max-width: $largest-mobile-screen) {
189
+ .person-profile {
190
+ .profile-header {
191
+ flex-direction: column;
192
+ align-items: start;
193
+ padding-bottom: $spacing-small;
194
+ gap: $spacing-small;
195
+ text-align: left;
196
+
197
+ .profile-info h1 {
198
+ margin-bottom: $spacing-medium !important;
199
+ }
200
+ }
201
+ .contact-wrapper {
202
+ gap: $spacing-small;
203
+ grid-template-columns: 1fr;
204
+
205
+ section {
206
+ padding-top: $spacing-medium;
207
+ }
208
+ }
209
+ .bio-section {
210
+ padding-top: 0;
211
+ padding-bottom: $spacing-medium;
212
+ }
213
+ }
214
+ }
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"],