@kitconcept/volto-light-theme 6.0.0-alpha.8 → 6.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 (101) hide show
  1. package/.changelog.draft +1 -5
  2. package/CHANGELOG.md +226 -0
  3. package/README.md +6 -5
  4. package/locales/de/LC_MESSAGES/volto.po +171 -38
  5. package/locales/en/LC_MESSAGES/volto.po +170 -37
  6. package/locales/es/LC_MESSAGES/volto.po +171 -38
  7. package/locales/eu/LC_MESSAGES/volto.po +171 -38
  8. package/locales/pt_BR/volto.po +171 -38
  9. package/locales/volto.pot +171 -38
  10. package/package.json +15 -6
  11. package/src/components/Blocks/EventMetadata/View.jsx +32 -26
  12. package/src/components/Blocks/Listing/DefaultTemplate.jsx +19 -14
  13. package/src/components/Blocks/Listing/GridTemplate.jsx +9 -12
  14. package/src/components/Blocks/Listing/SummaryTemplate.jsx +9 -7
  15. package/src/components/Blocks/Teaser/DefaultBody.jsx +93 -0
  16. package/src/components/Blocks/Teaser/schema.js +1 -7
  17. package/src/components/Footer/ColumnLinks.tsx +35 -0
  18. package/src/components/Footer/Footer.tsx +32 -0
  19. package/src/components/Footer/slots/Colophon.tsx +24 -0
  20. package/src/components/Footer/slots/Copyright.tsx +65 -0
  21. package/src/components/Footer/slots/CoreFooter.tsx +82 -0
  22. package/src/components/Footer/slots/FollowUsLogoAndLinks.tsx +80 -0
  23. package/src/components/Footer/slots/FooterLogos.tsx +44 -0
  24. package/src/components/Header/Header.tsx +257 -0
  25. package/src/components/Logo/Logo.tsx +85 -0
  26. package/src/components/{Footer/FooterLogos.tsx → LogosContainer/LogosContainer.tsx} +24 -25
  27. package/src/components/MobileNavigation/MobileNavigation.jsx +53 -18
  28. package/src/components/Navigation/Navigation.jsx +14 -3
  29. package/src/components/SearchWidget/IntranetSearchWidget.jsx +32 -5
  30. package/src/components/SearchWidget/SearchWidget.jsx +1 -1
  31. package/src/components/StickyMenu/StickyMenu.tsx +36 -0
  32. package/src/components/Summary/DefaultSummary.jsx +16 -0
  33. package/src/components/Summary/EventSummary.jsx +38 -0
  34. package/src/components/Summary/FileSummary.jsx +24 -0
  35. package/src/components/Summary/NewsItemSummary.jsx +40 -0
  36. package/src/components/Tags/Tags.jsx +46 -0
  37. package/src/components/Theme/EventView.jsx +19 -25
  38. package/src/components/Theme/NewsItemView.jsx +13 -9
  39. package/src/components/Theming/Theming.tsx +20 -17
  40. package/src/components/Widgets/{BlockAlignmentWidget.tsx → BlockAlignment.tsx} +9 -2
  41. package/src/components/Widgets/{BlockWidthWidget.tsx → BlockWidth.tsx} +10 -3
  42. package/src/components/Widgets/BlocksObject.tsx +353 -0
  43. package/src/components/Widgets/Buttons.tsx +117 -0
  44. package/src/components/Widgets/ColorContrastChecker.tsx +117 -0
  45. package/src/components/Widgets/ColorPicker.tsx +59 -0
  46. package/src/components/Widgets/{ColorPickerWidget.tsx → ColorSwatch.tsx} +5 -5
  47. package/src/components/Widgets/ObjectList.tsx +342 -0
  48. package/src/components/Widgets/{ThemingColorPicker.tsx → RACThemingColorPicker.tsx} +4 -0
  49. package/src/components/Widgets/Size.tsx +75 -0
  50. package/src/components/Widgets/ThemeColorSwatch.tsx +17 -0
  51. package/src/components/Widgets/schema/footerLinksSchema.ts +64 -0
  52. package/src/components/Widgets/schema/footerLogosSchema.ts +98 -0
  53. package/src/components/Widgets/schema/headerActionsSchema.ts +64 -0
  54. package/src/components/Widgets/schema/iconLinkListSchema.ts +98 -0
  55. package/src/config/blocks.tsx +39 -20
  56. package/src/config/settings.ts +54 -12
  57. package/src/config/slots.ts +36 -1
  58. package/src/config/summary.ts +24 -0
  59. package/src/config/widgets.ts +57 -20
  60. package/src/customizations/volto/components/manage/Blocks/Teaser/DefaultBody.jsx +8 -0
  61. package/src/customizations/volto/components/theme/Tags/Tags.jsx +11 -0
  62. package/src/customizations/volto/components/theme/View/RenderBlocks.jsx +2 -1
  63. package/src/helpers/DndSortableList.tsx +138 -0
  64. package/src/helpers/dates.js +22 -0
  65. package/src/helpers/doesNodeContainClick.js +64 -0
  66. package/src/helpers/useLiveData.ts +29 -0
  67. package/src/index.ts +33 -2
  68. package/src/primitives/IconLinkList.tsx +69 -0
  69. package/src/primitives/LinkList.tsx +35 -0
  70. package/src/theme/_bgcolor-blocks-layout.scss +50 -12
  71. package/src/theme/_container.scss +4 -0
  72. package/src/theme/_content.scss +6 -0
  73. package/src/theme/_footer.scss +295 -43
  74. package/src/theme/_header.scss +132 -19
  75. package/src/theme/_layout.scss +11 -1
  76. package/src/theme/_sitemap.scss +4 -0
  77. package/src/theme/_utils.scss +14 -1
  78. package/src/theme/_variables.scss +12 -3
  79. package/src/theme/_widgets.scss +102 -10
  80. package/src/theme/blocks/_eventMetadata.scss +5 -2
  81. package/src/theme/blocks/_grid.scss +3 -3
  82. package/src/theme/blocks/_highlight.scss +17 -44
  83. package/src/theme/blocks/_listing.scss +25 -16
  84. package/src/theme/blocks/_maps.scss +3 -3
  85. package/src/theme/blocks/_slider.scss +5 -1
  86. package/src/theme/main.scss +1 -0
  87. package/src/theme/sticky-menu.scss +50 -0
  88. package/src/types.d.ts +102 -0
  89. package/tsconfig.json +1 -1
  90. package/src/components/Footer/Footer.jsx +0 -115
  91. package/src/components/Footer/FooterLinks.tsx +0 -57
  92. package/src/components/Header/Header.jsx +0 -161
  93. package/src/components/Logo/Logo.jsx +0 -51
  94. package/src/components/Widgets/AlignWidget.jsx +0 -80
  95. package/src/components/Widgets/BackgroundColorWidget.tsx +0 -17
  96. package/src/components/Widgets/BlocksObjectWidget.tsx +0 -333
  97. package/src/components/Widgets/ButtonsWidget.tsx +0 -68
  98. package/src/components/Widgets/FooterLinksWidget.tsx +0 -106
  99. package/src/components/Widgets/FooterLogosWidget.tsx +0 -120
  100. package/src/static/container-query-polyfill.modern.js +0 -1
  101. package/src/types/index.d.ts +0 -1
@@ -1,4 +1,5 @@
1
- #sidebar-properties {
1
+ #sidebar-properties,
2
+ #sidebar-metadata {
2
3
  .field.widget {
3
4
  .buttons {
4
5
  display: flex;
@@ -28,15 +29,52 @@
28
29
  }
29
30
  }
30
31
 
31
- .field.color {
32
+ .field.theme-color-picker {
32
33
  .eight.wide.column {
33
34
  flex-direction: row;
34
35
  align-items: center;
35
36
 
36
37
  input {
38
+ height: 32px;
37
39
  padding-left: 8px;
40
+ border-bottom-left-radius: 0px;
41
+ border-top-left-radius: 0px;
38
42
  line-height: 1;
39
43
  }
44
+
45
+ .theme-color-picker-button .react-aria-ColorSwatch {
46
+ border-bottom-right-radius: 0px;
47
+ border-top-right-radius: 0px;
48
+ cursor: pointer;
49
+ }
50
+
51
+ .theme-color-picker-reset {
52
+ position: absolute;
53
+ right: 15px;
54
+
55
+ &[data-hovered='true'] {
56
+ cursor: pointer;
57
+ opacity: 0.7;
58
+ }
59
+ }
60
+ }
61
+ }
62
+
63
+ span.color-contrast-label {
64
+ position: relative;
65
+ display: block;
66
+ padding-left: 20%;
67
+ color: #ed6500;
68
+ font-size: 13px;
69
+ a {
70
+ padding: 0.1rem 0.25rem;
71
+ border: 1px solid var(--link-foreground-color);
72
+ border-radius: 100%;
73
+ margin: 0;
74
+ margin-left: 4px;
75
+ margin-left: 4px;
76
+ font-size: 0.4rem;
77
+ vertical-align: super;
40
78
  }
41
79
  }
42
80
 
@@ -44,7 +82,7 @@
44
82
  box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.3);
45
83
  }
46
84
 
47
- .theme-picker-widget {
85
+ .color-swatch-widget {
48
86
  .buttons {
49
87
  flex: 1 1 100%;
50
88
  margin: 1rem 0 0.5rem;
@@ -77,18 +115,17 @@
77
115
  }
78
116
  }
79
117
 
80
- .theme-picker-widget button {
118
+ .color-swatch-widget button {
81
119
  background-color: var(--theme-color);
82
120
  }
83
121
 
84
- // TODO: Remove when layers are in place
85
- .theme-picker-widget .button.grey,
86
- .theme-picker-widget .button.grey.active,
87
- .theme-picker-widget .ui.grey.button:hover {
122
+ .color-swatch-widget .button.grey,
123
+ .color-swatch-widget .button.grey.active,
124
+ .color-swatch-widget .ui.grey.button:hover {
88
125
  background-color: var(--theme-color);
89
126
  }
90
- .theme-picker-widget .button.active,
91
- .theme-picker-widget .button.active:hover {
127
+ .color-swatch-widget .button.active,
128
+ .color-swatch-widget .button.active:hover {
92
129
  background-color: var(--theme-color);
93
130
  }
94
131
 
@@ -100,3 +137,58 @@
100
137
  }
101
138
  }
102
139
  }
140
+
141
+ .object-list-widget {
142
+ .field.inline {
143
+ .add-item-button-wrapper {
144
+ display: flex;
145
+ justify-content: flex-end;
146
+ padding: 0;
147
+
148
+ button {
149
+ @include button-style;
150
+ }
151
+ }
152
+
153
+ .eight.wide.column:has(.add-item-button-wrapper) {
154
+ padding-right: 0;
155
+ }
156
+ }
157
+
158
+ .olw-item-wrapper {
159
+ padding: 0 10px;
160
+ border: 1px solid var(--quanta-smoke);
161
+ border-radius: 10px;
162
+ margin-bottom: 10px;
163
+ }
164
+
165
+ .olw-item-title-bar {
166
+ display: flex;
167
+ justify-content: space-between;
168
+ padding: 10px 0;
169
+ cursor: pointer;
170
+
171
+ .drag.handle {
172
+ display: flex;
173
+ align-items: center;
174
+ }
175
+ }
176
+
177
+ .olw-tools {
178
+ display: flex;
179
+ align-items: center;
180
+ button {
181
+ display: flex;
182
+ align-items: center;
183
+ cursor: pointer;
184
+ }
185
+ }
186
+
187
+ .olw-item-content {
188
+ margin-bottom: 20px;
189
+ }
190
+
191
+ #sidebar-properties &:first-child {
192
+ margin-top: 10px;
193
+ }
194
+ }
@@ -2,6 +2,7 @@
2
2
  .details-container {
3
3
  padding-top: $spacing-xlarge;
4
4
  padding-bottom: $spacing-xlarge;
5
+ border-color: var(--theme-foreground-color);
5
6
  border-top: 1px solid $black;
6
7
  border-bottom: 1px solid $black;
7
8
  margin-top: 0px;
@@ -44,6 +45,7 @@
44
45
  .separator {
45
46
  width: 170px;
46
47
  height: 30px;
48
+ border-color: var(--theme-foreground-color);
47
49
  border-right: none;
48
50
  border-bottom: 1px solid #000;
49
51
  }
@@ -62,14 +64,15 @@
62
64
  .event-btn {
63
65
  padding: 8px 20px;
64
66
  border: 1px solid #000;
67
+ border-color: var(--theme-foreground-color);
65
68
  border-radius: 5px;
66
69
  background-color: transparent;
67
- color: #000;
70
+ color: var(--theme-foreground-color, #000);
68
71
  font-size: 16px;
69
72
  font-weight: $bolder;
70
73
  line-height: 20px;
71
74
  a {
72
- color: #000;
75
+ color: var(--theme-foreground-color, #000);
73
76
  font-size: 16px;
74
77
  font-weight: $bolder;
75
78
  line-height: 20px;
@@ -125,13 +125,13 @@
125
125
  position: absolute;
126
126
  z-index: 100;
127
127
  bottom: 0;
128
- padding: 0 1rem 0 1rem;
128
+ padding: 0 1rem 15px 1rem;
129
129
  margin: 0;
130
130
 
131
131
  .title {
132
132
  margin: 0 0 20px 0;
133
133
  color: $white !important;
134
- letter-spacing: 1px;
134
+ letter-spacing: 0;
135
135
  @include text-heading-h3();
136
136
  }
137
137
 
@@ -300,7 +300,7 @@
300
300
  .title {
301
301
  margin: 0 0 15px 0;
302
302
  color: $white !important;
303
- letter-spacing: 1px;
303
+ letter-spacing: 0;
304
304
  @include text-heading-h4();
305
305
  }
306
306
  }
@@ -1,53 +1,26 @@
1
- $white: #fff !default;
2
- $black: #000 !default;
3
-
4
1
  .block.highlight {
5
- .title h2 {
6
- @include highlight-title();
7
- }
8
- .description p {
9
- @include introduction();
10
- }
11
- .button a {
12
- @include body-text();
13
- }
2
+ --highlight-images-aspect-ratio: var(--image-aspect-ratio, 1.7777777778);
14
3
 
15
- .highlight-description {
16
- a {
17
- @include introduction();
18
- text-decoration: none;
19
- }
20
- }
21
-
22
- &[class*='has--descriptionColor--highlight-custom-color-'] {
23
- .highlight-description {
24
- a {
25
- color: $black !important;
26
- }
4
+ .teaser-item.top .highlight-description {
5
+ .title h2 {
6
+ @include highlight-title();
27
7
  }
28
- }
29
- &.has--descriptionColor--highlight-custom-color-2 {
30
- .highlight-description {
31
- a {
32
- color: $white !important;
8
+ .description {
9
+ a,
10
+ p,
11
+ span {
12
+ @include introduction();
13
+ --link-foreground-color: var(--theme-foreground-color);
33
14
  }
34
15
  }
35
- }
36
- }
37
16
 
38
- .block-editor-highlight {
39
- &[class*='has--descriptionColor--highlight-custom-color-'] {
40
- .highlight-description {
41
- a {
42
- color: $black !important;
43
- }
44
- }
45
- }
46
- &.has--descriptionColor--highlight-custom-color-2 {
47
- .highlight-description {
48
- a {
49
- color: $white !important;
50
- }
17
+ .button a {
18
+ @include body-text-bold();
19
+ text-decoration: none;
51
20
  }
52
21
  }
53
22
  }
23
+ .block.highlight.has--descriptionColor--highlight-custom-color-2,
24
+ .block-editor-highlight.has--descriptionColor--highlight-custom-color-2 .block {
25
+ --theme-foreground-color: #fff;
26
+ }
@@ -53,20 +53,23 @@
53
53
  @include block-title();
54
54
  }
55
55
 
56
- .listing-item {
57
- a {
58
- .listing-body {
59
- h2 {
60
- @include text-heading-h2();
61
- }
62
- p {
63
- margin-bottom: 0;
64
- @include body-text();
65
- }
66
- p:empty {
67
- display: none;
68
- }
69
- }
56
+ .listing-body {
57
+ .headline {
58
+ margin-bottom: 20px;
59
+ letter-spacing: 1px;
60
+ text-transform: uppercase;
61
+ @include headtitle1();
62
+ }
63
+ h2 {
64
+ margin-top: 0;
65
+ @include text-heading-h2();
66
+ }
67
+ p {
68
+ margin-bottom: 0;
69
+ @include body-text();
70
+ }
71
+ p:empty {
72
+ display: none;
70
73
  }
71
74
  }
72
75
  }
@@ -79,13 +82,19 @@
79
82
  img {
80
83
  width: 220px;
81
84
  height: min-content;
82
- aspect-ratio: $aspect-ratio !important;
85
+ aspect-ratio: var(--image-aspect-ratio, $aspect-ratio) !important;
83
86
  @container (max-width: #{$largest-mobile-screen}) {
84
87
  width: 100%;
85
88
  min-width: 335px;
86
89
  margin-bottom: 20px;
87
90
  }
88
91
  }
92
+ .headline {
93
+ margin-bottom: 20px;
94
+ letter-spacing: 1px;
95
+ text-transform: uppercase;
96
+ @include headtitle1();
97
+ }
89
98
  h3 {
90
99
  margin-top: 0 !important;
91
100
  margin-bottom: 40px !important;
@@ -168,7 +177,7 @@
168
177
  img.item-image {
169
178
  width: 100%;
170
179
  margin: 0;
171
- aspect-ratio: $aspect-ratio !important;
180
+ aspect-ratio: var(--image-aspect-ratio, $aspect-ratio) !important;
172
181
  }
173
182
 
174
183
  .item {
@@ -1,14 +1,14 @@
1
1
  .block.maps {
2
2
  iframe {
3
3
  height: unset;
4
- aspect-ratio: $aspect-ratio;
4
+ aspect-ratio: var(--image-aspect-ratio, $aspect-ratio);
5
5
  }
6
6
  &.align.left {
7
7
  iframe {
8
8
  height: unset;
9
9
  margin-right: 20px !important;
10
10
  margin-bottom: 20px !important;
11
- aspect-ratio: $aspect-ratio;
11
+ aspect-ratio: var(--image-aspect-ratio, $aspect-ratio);
12
12
  @container (max-width: #{$largest-mobile-screen}) {
13
13
  margin-bottom: $spacing-large !important;
14
14
  }
@@ -21,7 +21,7 @@
21
21
  height: unset;
22
22
  margin-bottom: 20px !important;
23
23
  margin-left: 20px !important;
24
- aspect-ratio: $aspect-ratio;
24
+ aspect-ratio: var(--image-aspect-ratio, $aspect-ratio);
25
25
  @container (max-width: #{$largest-mobile-screen}) {
26
26
  margin-bottom: $spacing-large !important;
27
27
  }
@@ -20,7 +20,10 @@ $sliderImagesAspectRatio: var(--slider-images-aspect-ratio, 16/9);
20
20
 
21
21
  img {
22
22
  // Override Volto's Image Component inline style aspect ratio.
23
- aspect-ratio: $sliderImagesAspectRatio !important;
23
+ aspect-ratio: var(
24
+ --image-aspect-ratio,
25
+ $sliderImagesAspectRatio
26
+ ) !important;
24
27
  }
25
28
  }
26
29
 
@@ -103,6 +106,7 @@ $sliderImagesAspectRatio: var(--slider-images-aspect-ratio, 16/9);
103
106
  border: 1px solid currentColor;
104
107
  border-radius: 0;
105
108
  background-color: transparent;
109
+ color: $white;
106
110
  font-size: 16px;
107
111
  font-weight: 900;
108
112
  line-height: 20px;
@@ -34,6 +34,7 @@
34
34
  @import 'blocks/maps';
35
35
  @import 'blocks-chooser';
36
36
  @import 'blocks/eventMetadata';
37
+ @import 'sticky-menu';
37
38
 
38
39
  @import 'temp';
39
40
 
@@ -0,0 +1,50 @@
1
+ .sticky-menu {
2
+ position: fixed;
3
+ z-index: 1000;
4
+ top: 373px;
5
+ right: 0;
6
+
7
+ ul {
8
+ display: flex;
9
+ width: 115px;
10
+ flex-direction: column;
11
+ padding: 0;
12
+ margin: 0;
13
+ list-style: none;
14
+
15
+ li a {
16
+ display: flex;
17
+ height: 93px;
18
+ flex-direction: column;
19
+ align-items: center;
20
+ justify-content: center;
21
+ margin-bottom: 2px;
22
+ background: var(--sticky-menu-color, #555);
23
+ color: var(--sticky-menu-foreground-color, #fff);
24
+ font-family: Inter;
25
+ font-size: 10px;
26
+ font-style: normal;
27
+ font-weight: 700;
28
+ line-height: 18px; /* 180% */
29
+ text-transform: capitalize;
30
+ }
31
+
32
+ .image-wrapper {
33
+ height: 65px;
34
+ }
35
+
36
+ img {
37
+ width: 100%;
38
+ max-width: 65px;
39
+ height: auto;
40
+ }
41
+ }
42
+
43
+ @media only screen and (max-width: $largest-mobile-screen) {
44
+ display: none;
45
+ }
46
+ }
47
+
48
+ body.view-editview .sticky-menu {
49
+ display: none;
50
+ }
package/src/types.d.ts ADDED
@@ -0,0 +1,102 @@
1
+ import type { Brain, Image } from '@plone/types';
2
+
3
+ type hrefType = {
4
+ '@id': string;
5
+ title: string;
6
+ } & Partial<Brain>;
7
+
8
+ type headerAction = {
9
+ '@id': string;
10
+ title: string;
11
+ href: Array<hrefType>;
12
+ openInNewTab: boolean;
13
+ };
14
+
15
+ export type Link = {
16
+ '@id': string;
17
+ title: string;
18
+ href: Array<hrefType>;
19
+ openInNewTab: boolean;
20
+ };
21
+
22
+ export type Logo = {
23
+ '@id': string;
24
+ title: string;
25
+ logo: Image;
26
+ href: Array<hrefType>;
27
+ openInNewTab: boolean;
28
+ };
29
+
30
+ export type footerLogo = {
31
+ '@id': string;
32
+ title: string;
33
+ logo: Image;
34
+ href: Array<hrefType>;
35
+ openInNewTab: boolean;
36
+ };
37
+
38
+ export type iconLink = {
39
+ '@id': string;
40
+ title: string;
41
+ icon: Image;
42
+ href: Array<hrefType>;
43
+ openInNewTab: boolean;
44
+ };
45
+
46
+ export type SiteHeaderSettings = {
47
+ logo: Image & { data?: string };
48
+ complementary_logo: Image & { data?: string };
49
+ intranet_flag: string;
50
+ header_actions: Array<headerAction>;
51
+ has_intranet_header: boolean;
52
+ };
53
+
54
+ export type SiteThemeSettings = {
55
+ primary_foreground_color: string;
56
+ accent_foreground_color: string;
57
+ accent_color: string;
58
+ primary_color: string;
59
+ secondary_foreground_color: string;
60
+ secondary_color: string;
61
+ };
62
+
63
+ export type SiteFooterSettings = {
64
+ footer_logos: Array<footerLogo>;
65
+ footer_logos_container_width: string;
66
+ footer_logos_size: string;
67
+ footer_address: string;
68
+ footer_column_left_header: string;
69
+ footer_column_left: Array<Link>;
70
+ footer_column_middle_header: string;
71
+ footer_column_middle: Array<Link>;
72
+ footer_column_right_header: string;
73
+ footer_column_right: Array<Link>;
74
+ footer_logo: Image & { data?: string };
75
+ footer_links: Array<Link>;
76
+ };
77
+
78
+ export type StickyMenuSettings = {
79
+ sticky_menu: Array<iconLink>;
80
+ sticky_menu_color: string;
81
+ sticky_menu_foreground_color: string;
82
+ };
83
+
84
+ export type PloneGobrSocialMediaSettings = {
85
+ social_links: Array<iconLink>;
86
+ };
87
+
88
+ export type CustomInheritBehavior<T> = {
89
+ data: T;
90
+ from: {
91
+ '@id': string;
92
+ title: string;
93
+ };
94
+ };
95
+
96
+ declare module '@plone/types' {
97
+ export interface Content {
98
+ footer_logos: Array<footerLogo>;
99
+ sticky_menu: Array<stickyMenu>;
100
+ footer_links: Array<Link>;
101
+ }
102
+ }
package/tsconfig.json CHANGED
@@ -15,7 +15,7 @@
15
15
  "paths": {
16
16
  "@plone/volto/*": [
17
17
  "../../core/packages/volto/src/*",
18
- "../../../../core/packages/volto/src/*"
18
+ "../../../../../core/packages/volto/src/*"
19
19
  ],
20
20
  "@kitconcept/volto-light-theme/*": ["./src/*"]
21
21
  }
@@ -1,115 +0,0 @@
1
- // SemanticUI-free pre-@plone/components
2
- import React from 'react';
3
- import { FormattedMessage, defineMessages, useIntl } from 'react-intl';
4
- import { useSelector, shallowEqual } from 'react-redux';
5
- import { useLocation } from 'react-router-dom';
6
- import Logo from '@plone/volto/components/theme/Logo/Logo';
7
- import { Container } from '@plone/components';
8
- import SlotRenderer from '@plone/volto/components/theme/SlotRenderer/SlotRenderer';
9
- import FooterLinks from './FooterLinks';
10
-
11
- const messages = defineMessages({
12
- copyright: {
13
- id: 'Copyright',
14
- defaultMessage: 'Copyright',
15
- },
16
- });
17
-
18
- const Footer = () => {
19
- const intl = useIntl();
20
- const {
21
- content,
22
- lang,
23
- siteActions = [],
24
- } = useSelector(
25
- (state) => ({
26
- lang: state.intl.locale,
27
- siteActions: state.actions?.actions?.site_actions,
28
- content: state.content.data,
29
- }),
30
- shallowEqual,
31
- );
32
- const location = useLocation();
33
- const navroot = useSelector((state) => state.navroot.data.navroot);
34
- const footerLinks = navroot?.footer_links;
35
-
36
- return (
37
- <footer id="footer">
38
- <SlotRenderer name="preFooter" content={content} location={location} />
39
-
40
- <Container className="footer">
41
- <div className="footer-message">
42
- <FormattedMessage
43
- id="The {plonecms} is {copyright} 2000-{current_year} by the {plonefoundation} and friends."
44
- defaultMessage="The {plonecms} is {copyright} 2000-{current_year} by the {plonefoundation} and friends."
45
- values={{
46
- plonecms: (
47
- <FormattedMessage
48
- id="Plone{reg} Open Source CMS/WCM"
49
- defaultMessage="Plone{reg} Open Source CMS/WCM"
50
- values={{ reg: <sup>®</sup> }}
51
- />
52
- ),
53
- copyright: (
54
- <abbr title={intl.formatMessage(messages.copyright)}>©</abbr>
55
- ),
56
- current_year: new Date().getFullYear(),
57
- plonefoundation: (
58
- <a className="item" href="http://plone.org/foundation">
59
- <FormattedMessage
60
- id="Plone Foundation"
61
- defaultMessage="Plone Foundation"
62
- />
63
- </a>
64
- ),
65
- }}
66
- />{' '}
67
- <br />
68
- <FormattedMessage
69
- id="Distributed under the {license}."
70
- defaultMessage="Distributed under the {license}."
71
- values={{
72
- license: (
73
- <a
74
- className="item"
75
- href="http://creativecommons.org/licenses/GPL/2.0/"
76
- >
77
- <FormattedMessage
78
- id="GNU GPL license"
79
- defaultMessage="GNU GPL license"
80
- />
81
- </a>
82
- ),
83
- }}
84
- />
85
- </div>
86
- <FooterLinks
87
- links={footerLinks}
88
- siteActions={siteActions}
89
- lang={lang}
90
- />
91
- <div className="logo">
92
- <Logo />
93
- </div>
94
- <a className="item powered-by" href="https://plone.org">
95
- <FormattedMessage
96
- id="Powered by Plone & Python"
97
- defaultMessage="Powered by Plone & Python"
98
- />
99
- </a>
100
- <br />
101
- <div className="footer-branding">
102
- Made with{' '}
103
- <span role="img" aria-label="love" style={{ color: 'red' }}>
104
- ❤️
105
- </span>{' '}
106
- by kitconcept
107
- </div>
108
- </Container>
109
-
110
- <SlotRenderer name="postFooter" content={content} location={location} />
111
- </footer>
112
- );
113
- };
114
-
115
- export default Footer;