This is an automated email from the ASF dual-hosted git repository.

jamesfredley pushed a commit to branch add-grails-teepublic-shirt
in repository https://gitbox.apache.org/repos/asf/grails-static-website.git

commit 372ba6d401bb20cbdf8252fd12d8dd69b4947f36
Author: James Fredley <[email protected]>
AuthorDate: Mon Aug 10 16:11:57 2026 -0400

    Add Grails TeePublic shirt promotion
    
    Add an accessible, responsive homepage card for the Apache Grails
    T-shirt and self-host the Acid Black Vintage preview.
    
    Assisted-by: opencode:gpt-5.6-sol playwright
---
 DESIGN.md                                          |   9 +++
 .../images/grails-teepublic-shirt-acid-black.jpg   | Bin 0 -> 47420 bytes
 assets/stylesheets/screen.css                      |  74 +++++++++++++++++++++
 pages/index.html                                   |  15 ++++-
 4 files changed, 97 insertions(+), 1 deletion(-)

diff --git a/DESIGN.md b/DESIGN.md
index 018037859b1..3ab698eb439 100644
--- a/DESIGN.md
+++ b/DESIGN.md
@@ -170,6 +170,15 @@ Large headings may use balanced wrapping. Body copy should 
use natural wrapping
 - **Attributes:** documented legacy `data-button-*` plus current 
`data-launcher-button-*` 
height/width/background/bottom/right/image/padding/border-radius; 
`data-button-*` aliases (`text-color`, `text-font-size`, `bg-color`, 
`position-bottom/right`) are used for compatibility.
 - **Layout:** catalogue pages reserve bottom safe space; below `961px`, 
`footer` gets a `68px` right exclusion zone so sentences are not covered.
 
+### Homepage merchandise card
+
+- **Structure:** full-width card in the homepage community band with a square 
product image, `h2`, short description, variant guidance, and one TeePublic 
link.
+- **Spacing:** mobile padding uses the existing `24px` comfortable step; the 
image and copy separate further at tablet width.
+- **States:** the TeePublic link keeps white text on Grails blue, darkens on 
hover, and receives a visible Grails-blue focus outline against the white card.
+- **Accessibility:** the section is labelled by its heading, the image has 
useful alternative text and intrinsic dimensions, and variant guidance is 
available as text rather than encoded only in the image.
+- **Motion:** inherited color feedback only; no decorative movement.
+- **Layout:** one readable column on mobile, changing to a balanced 
image-and-copy grid from `768px` while remaining inside the shared `1141px` 
content width.
+
 ## 6. Motion & Interaction
 
 | Type | Duration | Easing | Usage |
diff --git a/assets/images/grails-teepublic-shirt-acid-black.jpg 
b/assets/images/grails-teepublic-shirt-acid-black.jpg
new file mode 100644
index 00000000000..c4a095d568d
Binary files /dev/null and 
b/assets/images/grails-teepublic-shirt-acid-black.jpg differ
diff --git a/assets/stylesheets/screen.css b/assets/stylesheets/screen.css
index 5890c8d47cd..eab8d55506d 100644
--- a/assets/stylesheets/screen.css
+++ b/assets/stylesheets/screen.css
@@ -333,6 +333,80 @@ td {
        margin-top: 20px;
 }
 
+.shirt-promotion {
+       display: grid;
+       grid-template-columns: minmax(0, 1fr);
+       gap: 24px;
+       align-items: center;
+       box-sizing: border-box;
+       margin: 50px 0;
+       padding: 24px;
+       background-color: #ffffff;
+       border-top: 2px solid #feb672;
+       box-shadow: 0 8px 6px -6px #ccc;
+}
+
+.shirt-promotion-image {
+       display: block;
+       width: 100%;
+       max-width: 420px;
+       height: auto;
+       margin: 0 auto;
+}
+
+.shirt-promotion-copy {
+       min-width: 0;
+       color: #666666;
+}
+
+.training .content .shirt-promotion-copy h2 {
+       margin: 0 0 16px;
+       color: #4f4f4f;
+       font-size: 24px;
+       line-height: 1.3;
+}
+
+.shirt-promotion-variant {
+       color: #4f4f4f;
+       font-weight: bold;
+}
+
+.shirt-promotion-link,
+.shirt-promotion-link:visited {
+       display: inline-block;
+       box-sizing: border-box;
+       max-width: 100%;
+       padding: 12px 20px;
+       background-color: #255AA8;
+       box-shadow: 1px 4px 4px #ccc;
+       color: #ffffff;
+       font-family: 'Archia-Light', 'Roboto-Light', "Open Sans", "Helvetica 
Neue", Helvetica, Arial, sans-serif;
+       font-size: 18px;
+       line-height: 1.4;
+       text-decoration: none;
+}
+
+.shirt-promotion-link:hover {
+       background-color: #1d4684;
+       color: #ffffff;
+}
+
+.shirt-promotion-link:focus,
+.shirt-promotion-link:focus-visible {
+       background-color: #1d4684;
+       color: #ffffff;
+       outline: 3px solid #255AA8;
+       outline-offset: 3px;
+}
+
+@media screen and (min-width: 768px) {
+       .shirt-promotion {
+               grid-template-columns: minmax(240px, 0.9fr) minmax(0, 1.1fr);
+               gap: 40px;
+               padding: 32px;
+       }
+}
+
 
 
 body.search thead th,
diff --git a/pages/index.html b/pages/index.html
index 475202a2460..dad15a3a067 100644
--- a/pages/index.html
+++ b/pages/index.html
@@ -144,6 +144,19 @@ body: home
                 </div>
             </div>
         </div>
+        <section class="shirt-promotion" 
aria-labelledby="shirt-promotion-title">
+            <img class="shirt-promotion-image" 
src="[%url]/images/grails-teepublic-shirt-acid-black.jpg"
+                 alt="Apache Grails T-shirt in Acid Black with an orange 
Grails logo" width="630" height="630"
+                 loading="lazy">
+            <div class="shirt-promotion-copy">
+                <h2 id="shirt-promotion-title">Apache Grails T-Shirt</h2>
+                <p>Take the Apache Grails logo with you on a TeePublic 
T-shirt.</p>
+                <p class="shirt-promotion-variant">Shown in Male Fit, Vintage, 
Acid Black. Select Vintage and Acid Black
+                    on TeePublic to match this look.</p>
+                <a class="shirt-promotion-link"
+                   
href="https://www.teepublic.com/t-shirt/96393154-apache-grails?store_id=3969012";>View
 the T-shirt on TeePublic</a>
+            </div>
+        </section>
     </div>
 </article>
 <article class="testimonials">
@@ -151,4 +164,4 @@ body: home
         <h2>They all use the Apache Grails Framework</h2>
         <img src="[%url]/images/testimoniallogos.png" alt="Companies using 
Grails" loading="lazy">
     </div>
-</article>
\ No newline at end of file
+</article>

Reply via email to