Changes for page products
Last modified by Alex Cotiugă on 2026/05/12 20:27
From version 1.10
edited by Alex Cotiugă
on 2026/05/12 20:02
on 2026/05/12 20:02
Change comment:
There is no comment for this version
To version 3.4
edited by Alex Cotiugă
on 2026/05/12 20:26
on 2026/05/12 20:26
Change comment:
There is no comment for this version
Summary
-
Page properties (1 modified, 0 added, 0 removed)
-
Objects (0 modified, 0 added, 1 removed)
Details
- Page properties
-
- Content
-
... ... @@ -1,83 +1,74 @@ 1 1 {{velocity}} 2 2 #set ($discard = $xwiki.ssx.use('PublicWebSite.WebHome')) 3 -#set ($discard = $xwiki.ssx.use('products.WebHome')) 4 4 {{html clean="false"}} 5 5 6 6 ## PAGE HEADER 7 - <section class=" hero hero-centeredproduct-hero" aria-labelledby="hero-title">8 - <div class="container hero-inner">9 - <div class=" hero-kicker">6 + <section class="product-index-hero" aria-labelledby="page-title"> 7 + <div class="container"> 8 + <div class="product-page-kicker"> 10 10 <i class="fa fa-cube" aria-hidden="true"></i> 11 11 Agnease products 12 12 </div> 13 13 14 - <h1 id=" hero-title">XWikiapplications andextensions</h1>13 + <h1 id="page-title">XWiki Applications and Extensions</h1> 15 15 16 - <p class="lead"> 15 + <p class="page-lead"> 17 17 Practical XWiki extensions built to improve security, workflows, administration and long-term platform usability. 18 18 </p> 19 - 20 - <p class="hero-support"> 21 - Agnease products are designed for organizations that use XWiki as a production platform and need focused, 22 - maintainable extensions that fit naturally into the XWiki experience. 23 - </p> 24 24 </div> 25 25 </section> 26 26 27 27 ## PRODUCT CARDS 28 - #set ($productItems = [{ 29 - 'title': 'XWiki Two-Factor Authentication', 30 - 'icon': 'lock', 31 - 'url': 'products.xwiki-two-factor-authentication', 32 - 'label': 'Security extension', 33 - 'content': 'Add a second verification step to the standard XWiki login flow using time-based one-time codes, without replacing the standard XWiki authentication experience.' 34 - }]) 35 - 36 - <section id="products-list" class="services products-list" aria-labelledby="items-title"> 22 + <section class="product-index-section" aria-labelledby="products-title"> 37 37 <div class="container"> 38 - <h2 id=" items-title">Available extensions</h2>24 + <h2 id="products-title">Available extensions</h2> 39 39 40 40 <p class="section-intro"> 41 - The first Agnease product focuse son strengthening access to XWiki while keeping the standard XWiki login experience.27 + The first Agnease product is focused on strengthening access to XWiki while keeping the standard XWiki login experience. 42 42 </p> 43 43 44 - <div class="services-grid products-grid"> 45 - #foreach ($entry in $productItems) 46 - <article class="service product-item"> 47 - <div class="service-icon" aria-hidden="true"> 48 - <i class="fa fa-$entry.icon"></i> 30 + <div class="product-card-grid"> 31 + <article class="product-card"> 32 + <div class="product-card-icon"> 33 + <i class="fa fa-lock" aria-hidden="true"></i> 34 + </div> 35 + 36 + <div class="product-card-body"> 37 + <div class="product-card-kicker"> 38 + <i class="fa fa-lock" aria-hidden="true"></i> 39 + Security extension 49 49 </div> 50 50 51 - <div class="service-body"> 52 - <div class="hero-kicker product-item-kicker"> 53 - <i class="fa fa-$entry.icon" aria-hidden="true"></i> 54 - $entry.label 55 - </div> 42 + <h3>XWiki Two-Factor Authentication</h3> 56 56 57 - <h4>$entry.title</h4> 58 - <p>$entry.content</p> 44 + <p> 45 + Add a second verification step to the standard XWiki login flow using time-based one-time codes. 46 + The extension is designed for organizations that want stronger account protection without replacing 47 + the standard XWiki authentication experience. 48 + </p> 59 59 60 - <ul class="product-highlights">61 - <li>Works with the standard XWiki authentication flow</li>62 - <li>Adds a TOTP verification step after username/password login</li>63 - <li>Includes user setup and administration controls</li>64 - </ul>50 + <ul class="product-highlights"> 51 + <li>Works with the standard XWiki authentication flow</li> 52 + <li>Adds a TOTP verification step after username/password login</li> 53 + <li>Includes user setup and administration controls</li> 54 + </ul> 65 65 66 - <p class="card-link"> 67 - <a href="$xwiki.getURL($entry.url)">View extension</a> 68 - </p> 69 - </div> 70 - </article> 71 - #end 56 + <p class="card-link"> 57 + <a class="btn btn-secondary" href="$xwiki.getURL('products.xwiki-two-factor-authentication')"> 58 + View extension 59 + </a> 60 + </p> 61 + </div> 62 + </article> 72 72 </div> 73 73 </div> 74 74 </section> 75 75 76 76 ## CTA 77 - <section class="cta-section" aria-labelledby="cta-title"> 68 + <section class="product-cta-section" aria-labelledby="product-cta-title"> 78 78 <div class="container"> 79 - <div class="cta-panel"> 80 - <h2 id="cta-title">Need a custom XWiki application?</h2> 70 + <div class="product-cta-panel"> 71 + <h2 id="product-cta-title">Need a custom XWiki application?</h2> 81 81 82 82 <p> 83 83 Agnease also builds custom XWiki applications, workflows, integrations and extensions adapted to specific business processes.
- XWiki.StyleSheetExtension[0]
-
- cache
-
... ... @@ -1,1 +1,0 @@ 1 -long - code
-
... ... @@ -1,225 +1,0 @@ 1 -/* ========== Agnease Products / Extensions ========== */ 2 -/* Self-contained variables because LESS variables are not shared between SSX pages. */ 3 - 4 -@brand: #00937D; 5 -@brand-strong: #007B6A; 6 -@text: #2D3A34; 7 -@muted: #5B6B64; 8 -@line: #E4ECE9; 9 -@brand-bg: #F4FCFA; 10 -@brand-soft: #E7FFF8; 11 -@radius: 14px; 12 -@shadow-sm: 0 10px 28px rgba(0, 0, 0, .06); 13 - 14 -.agnease-product-page { 15 - color: @text; 16 - 17 - .container { 18 - max-width: 1040px; 19 - } 20 - 21 - .product-index-hero { 22 - padding: 56px 0 48px; 23 - text-align: center; 24 - background: 25 - radial-gradient(42rem 16rem at 50% -10%, @brand-soft 0%, transparent 65%), 26 - radial-gradient(42rem 16rem at 50% 0%, #E8F6F3 0%, transparent 60%); 27 - border-bottom: 1px solid @line; 28 - } 29 - 30 - .page-eyebrow { 31 - color: @brand; 32 - font-size: 13px; 33 - font-weight: 800; 34 - text-transform: uppercase; 35 - letter-spacing: .06em; 36 - margin: 0 0 10px; 37 - } 38 - 39 - h1 { 40 - margin: 0; 41 - color: @text; 42 - font-size: 36px; 43 - line-height: 1.2; 44 - font-weight: 700; 45 - } 46 - 47 - .page-lead { 48 - max-width: 760px; 49 - margin: 14px auto 0; 50 - color: @muted; 51 - font-size: 18px; 52 - line-height: 1.55; 53 - } 54 - 55 - .product-index-section { 56 - padding: 52px 0 56px; 57 - 58 - h2 { 59 - text-align: center; 60 - margin: 0 0 10px; 61 - color: @text; 62 - font-size: 28px; 63 - line-height: 1.25; 64 - font-weight: 600; 65 - } 66 - } 67 - 68 - .section-intro { 69 - max-width: 760px; 70 - margin: 0 auto 26px; 71 - text-align: center; 72 - color: @muted; 73 - font-size: 16px; 74 - line-height: 1.55; 75 - } 76 - 77 - .product-card-grid { 78 - max-width: 840px; 79 - margin: 0 auto; 80 - display: grid; 81 - grid-template-columns: 1fr; 82 - grid-gap: 18px; 83 - } 84 - 85 - .product-card { 86 - background: #fff; 87 - border: 1px solid @line; 88 - border-radius: @radius; 89 - box-shadow: @shadow-sm; 90 - padding: 28px; 91 - display: grid; 92 - grid-template-columns: 68px 1fr; 93 - grid-gap: 22px; 94 - align-items: start; 95 - } 96 - 97 - .product-card-icon { 98 - width: 58px; 99 - height: 58px; 100 - border-radius: 50%; 101 - background: fade(@brand, 10%); 102 - border: 1px solid fade(@brand, 20%); 103 - color: @brand; 104 - display: flex; 105 - align-items: center; 106 - justify-content: center; 107 - font-size: 22px; 108 - } 109 - 110 - .product-label { 111 - display: inline-flex; 112 - margin: 0 0 8px; 113 - padding: 5px 10px; 114 - border-radius: 999px; 115 - color: @brand; 116 - background: fade(@brand, 8%); 117 - border: 1px solid fade(@brand, 18%); 118 - font-size: 12px; 119 - font-weight: 800; 120 - text-transform: uppercase; 121 - letter-spacing: .04em; 122 - } 123 - 124 - .product-card h3 { 125 - margin: 0 0 10px; 126 - color: @text; 127 - font-size: 23px; 128 - line-height: 1.25; 129 - font-weight: 600; 130 - } 131 - 132 - .product-card p { 133 - color: @muted; 134 - line-height: 1.6; 135 - } 136 - 137 - .product-highlights { 138 - margin: 14px 0 20px; 139 - padding-left: 18px; 140 - color: @muted; 141 - 142 - li { 143 - margin: 6px 0; 144 - line-height: 1.45; 145 - } 146 - } 147 - 148 - .card-link { 149 - margin: 0; 150 - } 151 - 152 - .btn-secondary { 153 - color: @brand; 154 - background: #fff; 155 - border: 1px solid fade(@brand, 35%); 156 - 157 - &:hover, 158 - &:focus { 159 - color: @brand-strong; 160 - border-color: @brand; 161 - background: @brand-bg; 162 - text-decoration: none; 163 - } 164 - } 165 - 166 - .product-cta-section { 167 - padding: 0 0 56px; 168 - } 169 - 170 - .product-cta-panel { 171 - max-width: 860px; 172 - margin: 0 auto; 173 - padding: 32px; 174 - border-radius: @radius; 175 - border: 1px solid fade(@brand, 20%); 176 - background: 177 - radial-gradient(34rem 12rem at 50% 0%, @brand-soft 0%, #fff 70%); 178 - box-shadow: @shadow-sm; 179 - text-align: center; 180 - 181 - h2 { 182 - margin: 0 0 12px; 183 - color: @text; 184 - font-size: 26px; 185 - line-height: 1.25; 186 - } 187 - 188 - p { 189 - max-width: 680px; 190 - margin: 0 auto 18px; 191 - color: @muted; 192 - line-height: 1.55; 193 - } 194 - } 195 -} 196 - 197 -@media (max-width: 767px) { 198 - .agnease-product-page { 199 - .product-index-hero { 200 - padding: 38px 0 34px; 201 - } 202 - 203 - h1 { 204 - font-size: 30px; 205 - } 206 - 207 - .page-lead { 208 - font-size: 16px; 209 - } 210 - 211 - .product-card { 212 - grid-template-columns: 1fr; 213 - padding: 22px; 214 - text-align: left; 215 - } 216 - 217 - .product-card-icon { 218 - margin-bottom: 2px; 219 - } 220 - 221 - .product-cta-panel { 222 - padding: 24px; 223 - } 224 - } 225 -} - contentType
-
... ... @@ -1,1 +1,0 @@ 1 -LESS - use
-
... ... @@ -1,1 +1,0 @@ 1 -onDemand