From daa02d36d589c5989b9db32e0e603b3b97b918b7 Mon Sep 17 00:00:00 2001 From: Dominik Polakovics Date: Thu, 12 Dec 2024 23:52:34 +0100 Subject: [PATCH] feat: design change to hero and add stats element --- .chatgpt_config.yaml | 2 +- .../SitePackage/TypoScript/page.typoscript | 119 +++++++++--------- .../TCA/Overrides/tt_content.php | 12 +- .../ContentElements/hero/assets/frontend.css | 27 ++-- .../hero/templates/frontend.html | 43 +++---- .../ContentElements/stats/assets/frontend.css | 46 +++++++ .../ContentElements/stats/config.yaml | 10 ++ .../ContentElements/stats/language/labels.xlf | 14 +++ .../stats/templates/backend-preview.html | 16 +++ .../stats/templates/frontend.html | 13 ++ prompt.md | 1 + 11 files changed, 207 insertions(+), 96 deletions(-) create mode 100644 packages/base/ContentBlocks/ContentElements/stats/assets/frontend.css create mode 100644 packages/base/ContentBlocks/ContentElements/stats/config.yaml create mode 100644 packages/base/ContentBlocks/ContentElements/stats/language/labels.xlf create mode 100644 packages/base/ContentBlocks/ContentElements/stats/templates/backend-preview.html create mode 100644 packages/base/ContentBlocks/ContentElements/stats/templates/frontend.html create mode 100644 prompt.md diff --git a/.chatgpt_config.yaml b/.chatgpt_config.yaml index cfe7910..8a33774 100644 --- a/.chatgpt_config.yaml +++ b/.chatgpt_config.yaml @@ -2,4 +2,4 @@ default_prompt_blocks: - "basic-prompt" - "typo3-development" directories: - - "packages/base/ContentBlocks" + - "packages" diff --git a/packages/base/Configuration/Sets/SitePackage/TypoScript/page.typoscript b/packages/base/Configuration/Sets/SitePackage/TypoScript/page.typoscript index 5857e89..d1bd3c6 100644 --- a/packages/base/Configuration/Sets/SitePackage/TypoScript/page.typoscript +++ b/packages/base/Configuration/Sets/SitePackage/TypoScript/page.typoscript @@ -1,79 +1,74 @@ -############## -#### PAGE #### -############## +# Include existing configuration + + page = PAGE page { - typeNum = 0 - shortcutIcon = EXT:base/Resources/Public/Icons/favicon.ico - - 10 = PAGEVIEW - 10 { - paths { - 0 = EXT:base/Resources/Private/PageView/ - 1 = {$page.pageview.paths} + typeNum = 0 + shortcutIcon = EXT:base/Resources/Public/Icons/favicon.ico + 10 = PAGEVIEW + 10 { + paths { + 0 = EXT:base/Resources/Private/PageView/ + 1 = {$page.pageview.paths} + } + dataProcessing { + 10 = files + 10 { + references.fieldName = media } - dataProcessing { - 10 = files - 10 { - references.fieldName = media - } - 20 = menu - 20 { - levels = 2 - includeSpacer = 1 - as = mainnavigation - } - 30 = page-content + 20 = menu + 20 { + levels = 2 + includeSpacer = 1 + as = mainnavigation } + 30 = page-content } + } - meta { - viewport = {$page.meta.viewport} - robots = {$page.meta.robots} - apple-mobile-web-app-capable = {$page.meta.apple-mobile-web-app-capable} + meta { + viewport = {$page.meta.viewport} + robots = {$page.meta.robots} + apple-mobile-web-app-capable = {$page.meta.apple-mobile-web-app-capable} - X-UA-Compatible = {$page.meta.compatible} - X-UA-Compatible { - attribute = http-equiv - } + X-UA-Compatible = {$page.meta.compatible} + X-UA-Compatible { + attribute = http-equiv } + } - includeCSSLibs { + includeCSS { + main = EXT:base/Resources/Public/Scss/main.scss + } - } + includeJSLibs { + navigation = EXT:base/Resources/Public/JavaScript/navigation.js + } - includeCSS { - main = EXT:base/Resources/Public/Scss/main.scss - } - - includeJSLibs { - navigation = EXT:base/Resources/Public/JavaScript/navigation.js - - } - - includeJS { - - } - - includeJSFooterlibs { - - } - - includeJSFooter { - test_scripts = EXT:base/Resources/Public/JavaScript/main.js - } + includeJSFooter { + test_scripts = EXT:base/Resources/Public/JavaScript/main.js + } } - - lib.contentElement { - layoutRootPaths { - 0 = EXT:base/Resources/Private/ContentElements/Layouts/ - } + layoutRootPaths { + 0 = EXT:base/Resources/Private/ContentElements/Layouts/ + } } -lib.contentBlock { - partialRootPaths.0 < lib.contentElement.partialRootPaths.0 - layoutRootPaths.0 < lib.contentElement.layoutRootPaths.0 - settings < lib.contentElement.settings +lib.contentBlock { + partialRootPaths.0 < lib.contentElement.partialRootPaths.0 + layoutRootPaths.0 < lib.contentElement.layoutRootPaths.0 + settings < lib.contentElement.settings +} + +# Ensure parseFunc removes empty paragraphs and whitespace +lib.parseFunc_RTE { + nonTypoTagStdWrap.encapsLines.stripEmptyLines = 1 + nonTypoTagStdWrap.trim = 1 + externalBlocks { + p { + stdWrap.stripNL = 1 + } + } } diff --git a/packages/base/Configuration/TCA/Overrides/tt_content.php b/packages/base/Configuration/TCA/Overrides/tt_content.php index 77901df..834afe9 100644 --- a/packages/base/Configuration/TCA/Overrides/tt_content.php +++ b/packages/base/Configuration/TCA/Overrides/tt_content.php @@ -1,3 +1,13 @@ 'header, number1, label1, number2, label2, number3, label3, number4, label4' +// ]; + +// The above is optional if Content Blocks extension is in use and config.yaml fields are applied automatically. diff --git a/packages/base/ContentBlocks/ContentElements/hero/assets/frontend.css b/packages/base/ContentBlocks/ContentElements/hero/assets/frontend.css index 4448beb..75d29e2 100644 --- a/packages/base/ContentBlocks/ContentElements/hero/assets/frontend.css +++ b/packages/base/ContentBlocks/ContentElements/hero/assets/frontend.css @@ -1,9 +1,21 @@ .frame-type-cloonar_hero { - background: #f9f9f9; - padding: 1rem; /* Mobile-first padding */ + position: relative; + z-index: 1; + background: #cecece; +} + + +.frame-type-cloonar_hero + .frame { + margin-top: -10rem; +} + +/* Inner container with white background and padding */ +.frame-type-cloonar_hero .hero-inner { + padding: 3rem 1rem; + max-width: 1140px; + margin: 0 auto; } -/* Mobile-first: stacked layout */ .frame-type-cloonar_hero .hero { display: flex; flex-direction: column; @@ -68,7 +80,6 @@ border-radius: 0.5rem; } -/* Medium devices (≥768px) - slightly larger text and icons */ @media (min-width: 768px) { .frame-type-cloonar_hero .hero-subheader { font-size: 1.2rem; @@ -94,13 +105,7 @@ } } -/* Large devices (≥992px): Switch to 3-column layout */ @media (min-width: 992px) { - .frame-type-cloonar_hero { - padding: 2rem; - } - - /* Three-column grid: text (left), image (middle), icons (right) */ .frame-type-cloonar_hero .hero { display: grid; grid-template-columns: 1fr auto auto; @@ -150,6 +155,6 @@ } .frame-type-cloonar_hero .hero-image { - max-width: 300px; /* Slightly larger on desktop, but not too big */ + max-width: 300px; } } diff --git a/packages/base/ContentBlocks/ContentElements/hero/templates/frontend.html b/packages/base/ContentBlocks/ContentElements/hero/templates/frontend.html index 8181cc2..7b44b2b 100644 --- a/packages/base/ContentBlocks/ContentElements/hero/templates/frontend.html +++ b/packages/base/ContentBlocks/ContentElements/hero/templates/frontend.html @@ -6,27 +6,28 @@ -
-
{data.subheader}
-

{data.header}

-
- {data.bodytext} +
+
+
{data.subheader}
+

{data.header}

+
+ {data.bodytext} +
+
+ + + +
+
+ + + + + +

No image available

+
+
+
-
- - - -
-
- - - - - -

No image available

-
-
-
-
diff --git a/packages/base/ContentBlocks/ContentElements/stats/assets/frontend.css b/packages/base/ContentBlocks/ContentElements/stats/assets/frontend.css new file mode 100644 index 0000000..5c55a36 --- /dev/null +++ b/packages/base/ContentBlocks/ContentElements/stats/assets/frontend.css @@ -0,0 +1,46 @@ +.frame-type-cloonar_stats .stats-wrapper { + display: flex; + flex-wrap: wrap; + gap: 2rem; + justify-content: space-between; + align-items: flex-start; + position: relative; + z-index: 10; /* Ensure it's on top of the hero container */ + background: #fff; + padding: 3rem 1rem; + max-width: 1140px; + margin-left: auto; + margin-right: auto; +} + +/* Each paragraph is treated as a column */ +.frame-type-cloonar_stats .stats-wrapper p { + flex: 1 1 calc(25% - 2rem); + min-width: 150px; + text-align: center; + margin-bottom: 1rem; +} + +/* Lead paragraphs have larger text for numbers */ +.frame-type-cloonar_stats .stats-wrapper p.lead { + font-size: 2rem; + font-weight: bold; + color: #3c6418; + margin-bottom: 0.5rem; +} + +.frame-type-cloonar_stats .stats-wrapper p:not(.lead) { + font-size: 0.9rem; + color: #444; +} + +@media (max-width: 768px) { + .frame-type-cloonar_stats .stats-wrapper { + gap: 1rem; + padding: 2rem 1rem; + margin-top: -5rem; /* Adjust as needed for smaller screens */ + } + .frame-type-cloonar_stats .stats-wrapper p { + flex: 1 1 100%; + } +} diff --git a/packages/base/ContentBlocks/ContentElements/stats/config.yaml b/packages/base/ContentBlocks/ContentElements/stats/config.yaml new file mode 100644 index 0000000..385c8c9 --- /dev/null +++ b/packages/base/ContentBlocks/ContentElements/stats/config.yaml @@ -0,0 +1,10 @@ +name: cloonar/stats +typeName: cloonar_stats +group: default +prefixFields: true +prefixType: full +fields: + - identifier: bodytext + type: Textarea + enableRichtext: true + useExistingField: true diff --git a/packages/base/ContentBlocks/ContentElements/stats/language/labels.xlf b/packages/base/ContentBlocks/ContentElements/stats/language/labels.xlf new file mode 100644 index 0000000..4c895d3 --- /dev/null +++ b/packages/base/ContentBlocks/ContentElements/stats/language/labels.xlf @@ -0,0 +1,14 @@ + + + +
+ + + Statistics Block + + + A responsive statistics content block with four editable columns. + + + + diff --git a/packages/base/ContentBlocks/ContentElements/stats/templates/backend-preview.html b/packages/base/ContentBlocks/ContentElements/stats/templates/backend-preview.html new file mode 100644 index 0000000..4fe2129 --- /dev/null +++ b/packages/base/ContentBlocks/ContentElements/stats/templates/backend-preview.html @@ -0,0 +1,16 @@ + + + + + + Statistics Preview + + + + + + + diff --git a/packages/base/ContentBlocks/ContentElements/stats/templates/frontend.html b/packages/base/ContentBlocks/ContentElements/stats/templates/frontend.html new file mode 100644 index 0000000..b43e7ba --- /dev/null +++ b/packages/base/ContentBlocks/ContentElements/stats/templates/frontend.html @@ -0,0 +1,13 @@ + + + + + + + +
+ + {data.bodytext} + +
+
diff --git a/prompt.md b/prompt.md new file mode 100644 index 0000000..58adb0b --- /dev/null +++ b/prompt.md @@ -0,0 +1 @@ +create a new contentblock contentelement based on the picture attached, the text in the columns should be editable. it should be fully responsive