Changes for page products
Last modified by Alex Cotiugă on 2026/05/12 20:27
From version 1.6
edited by Alex Cotiugă
on 2026/05/12 19:52
on 2026/05/12 19:52
Change comment:
There is no comment for this version
To version 3.5
edited by Alex Cotiugă
on 2026/05/12 20:27
on 2026/05/12 20:27
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,55 +1,88 @@ 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 -<section class="page-header-compact" aria-labelledby="page-title"> 7 - <div class="container"> 8 - <p class="page-eyebrow">Agnease products</p> 9 - <h1 id="page-title">XWiki Applications and Extensions</h1> 10 - <p class="page-lead"> 11 - Practical XWiki extensions built to improve security, workflows, administration and long-term platform usability. 12 - </p> 13 - </div> 14 -</section> 5 + ## PAGE HEADER 6 + <section class="hero hero-centered product-hero" aria-labelledby="hero-title"> 7 + <div class="container hero-inner"> 8 + <div class="hero-kicker"> 9 + <i class="fa fa-cube" aria-hidden="true"></i> 10 + Agnease products 11 + </div> 15 15 16 -<section aria-labelledby="products-title"> 17 - <div class="container"> 18 - <h2 id="products-title">Available extensions</h2> 13 + <h1 id="hero-title">XWiki applications and extensions</h1> 19 19 20 - <div class="product-card-grid"> 21 - <article class="product-card"> 22 - <div class="product-card-icon"> 23 - <i class="fa fa-lock" aria-hidden="true"></i> 24 - </div> 15 + <p class="lead"> 16 + Practical XWiki extensions built to improve security, workflows, administration and long-term platform usability. 17 + </p> 25 25 26 - <h3>XWiki Two-Factor Authentication</h3> 19 + <p class="hero-support"> 20 + Agnease products are designed for organizations that use XWiki as a production platform and need focused, 21 + maintainable extensions that fit naturally into the XWiki experience. 22 + </p> 23 + </div> 24 + </section> 27 27 26 + ## PRODUCT CARDS 27 + <section class="product-index-section" aria-labelledby="products-title"> 28 + <div class="container"> 29 + <h2 id="products-title">Available extensions</h2> 30 + 31 + <p class="section-intro"> 32 + The first Agnease product is focused on strengthening access to XWiki while keeping the standard XWiki login experience. 33 + </p> 34 + 35 + <div class="product-card-grid"> 36 + <article class="product-card"> 37 + <div class="product-card-icon"> 38 + <i class="fa fa-lock" aria-hidden="true"></i> 39 + </div> 40 + 41 + <div class="product-card-body"> 42 + <div class="hero-kicker product-card-kicker"> 43 + <i class="fa fa-lock" aria-hidden="true"></i> 44 + Security extension 45 + </div> 46 + 47 + <h3>XWiki Two-Factor Authentication</h3> 48 + 49 + <p> 50 + Add a second verification step to the standard XWiki login flow using time-based one-time codes. 51 + The extension is designed for organizations that want stronger account protection without replacing 52 + the standard XWiki authentication experience. 53 + </p> 54 + 55 + <ul class="product-highlights"> 56 + <li>Works with the standard XWiki authentication flow</li> 57 + <li>Adds a TOTP verification step after username/password login</li> 58 + <li>Includes user setup and administration controls</li> 59 + </ul> 60 + 61 + <p class="card-link"> 62 + <a class="btn btn-secondary" href="$xwiki.getURL('products.xwiki-two-factor-authentication')"> 63 + View extension 64 + </a> 65 + </p> 66 + </div> 67 + </article> 68 + </div> 69 + </div> 70 + </section> 71 + 72 + ## CTA 73 + <section class="cta-section" aria-labelledby="product-cta-title"> 74 + <div class="container"> 75 + <div class="cta-panel"> 76 + <h2 id="product-cta-title">Need a custom XWiki application?</h2> 77 + 28 28 <p> 29 - Add a second verification step to the standard XWiki login flow using time-based one-time codes. 30 - The extension is designed for organizations that want stronger account protection without replacing 31 - the standard XWiki authentication experience. 79 + Agnease also builds custom XWiki applications, workflows, integrations and extensions adapted to specific business processes. 32 32 </p> 33 33 34 - <p class="card-link"> 35 - <a href="$xwiki.getURL('products.xwiki-two-factor-authentication')">View extension</a> 36 - </p> 37 - </article> 82 + <a class="btn btn-primary" href="$xwiki.getURL('contact.WebHome')">Contact Agnease</a> 83 + </div> 38 38 </div> 39 - </div> 40 -</section> 85 + </section> 41 41 42 -<section class="cta-section"> 43 - <div class="container"> 44 - <div class="cta-panel"> 45 - <h2>Need a custom XWiki application?</h2> 46 - <p> 47 - Agnease also builds custom XWiki applications, workflows, integrations and extensions adapted to specific business processes. 48 - </p> 49 - <a class="btn btn-primary" href="$xwiki.getURL('contact.WebHome')">Contact Agnease</a> 50 - </div> 51 - </div> 52 -</section> 53 - 54 54 {{/html}} 55 55 {{/velocity}}
- XWiki.StyleSheetExtension[0]
-
- cache
-
... ... @@ -1,1 +1,0 @@ 1 -long - code
-
... ... @@ -1,279 +1,0 @@ 1 -/* ========== Agnease Products / Extensions ========== */ 2 - 3 -.public-nav { 4 - display: flex; 5 - align-items: center; 6 - gap: 24px; 7 - 8 - a { 9 - color: @brand; 10 - font-weight: 700; 11 - text-decoration: none; 12 - 13 - &:hover, 14 - &:focus { 15 - color: @brand-strong; 16 - text-decoration: underline; 17 - } 18 - } 19 -} 20 - 21 -.page-header-compact { 22 - background: 23 - radial-gradient(42rem 16rem at 50% -10%, #E7FFF8 0%, transparent 65%), 24 - radial-gradient(42rem 16rem at 50% 0%, #E8F6F3 0%, transparent 60%); 25 - text-align: center; 26 - 27 - .page-eyebrow { 28 - color: @brand; 29 - font-size: 13px; 30 - font-weight: 800; 31 - text-transform: uppercase; 32 - letter-spacing: .06em; 33 - margin-bottom: 8px; 34 - } 35 - 36 - h1 { 37 - margin-top: 0; 38 - color: @text; 39 - } 40 - 41 - .page-lead { 42 - max-width: 760px; 43 - margin: 0 auto; 44 - color: @muted; 45 - font-size: 18px; 46 - line-height: 1.55; 47 - } 48 -} 49 - 50 -.product-hero { 51 - background: 52 - radial-gradient(48rem 18rem at 50% -10%, #E7FFF8 0%, transparent 65%), 53 - radial-gradient(48rem 18rem at 50% 0%, #E8F6F3 0%, transparent 60%); 54 -} 55 - 56 -.product-kicker { 57 - display: inline-flex; 58 - align-items: center; 59 - gap: 8px; 60 - color: @brand; 61 - background: fade(@brand, 8%); 62 - border: 1px solid fade(@brand, 18%); 63 - border-radius: 999px; 64 - padding: 6px 12px; 65 - margin-bottom: 14px; 66 - font-size: 13px; 67 - font-weight: 800; 68 -} 69 - 70 -.product-layout { 71 - max-width: 1040px; 72 - margin: 0 auto; 73 - display: grid; 74 - grid-template-columns: 1.1fr .9fr; 75 - grid-gap: 28px; 76 - align-items: start; 77 -} 78 - 79 -.product-summary-card, 80 -.product-info-card, 81 -.product-gallery-panel { 82 - background: #fff; 83 - border: 1px solid @line; 84 - border-radius: @radius; 85 - box-shadow: @shadow-sm; 86 -} 87 - 88 -.product-summary-card { 89 - padding: 24px; 90 - 91 - h2 { 92 - text-align: left; 93 - margin-top: 0; 94 - } 95 - 96 - p { 97 - color: @muted; 98 - line-height: 1.6; 99 - } 100 -} 101 - 102 -.product-info-card { 103 - padding: 20px; 104 - 105 - h3 { 106 - margin-top: 0; 107 - color: @text; 108 - } 109 - 110 - ul { 111 - margin: 0; 112 - padding-left: 20px; 113 - color: @muted; 114 - } 115 - 116 - li { 117 - margin: 8px 0; 118 - line-height: 1.45; 119 - } 120 -} 121 - 122 -.product-feature-grid { 123 - max-width: 1040px; 124 - margin: 22px auto 0; 125 - display: grid; 126 - grid-template-columns: repeat(3, minmax(0, 1fr)); 127 - grid-gap: 16px; 128 -} 129 - 130 -.product-feature { 131 - background: #fff; 132 - border: 1px solid @line; 133 - border-radius: @radius; 134 - box-shadow: @shadow-sm; 135 - padding: 18px; 136 - 137 - .feature-icon { 138 - width: 42px; 139 - height: 42px; 140 - border-radius: 50%; 141 - background: fade(@brand, 10%); 142 - color: @brand; 143 - display: flex; 144 - align-items: center; 145 - justify-content: center; 146 - margin-bottom: 12px; 147 - font-size: 17px; 148 - } 149 - 150 - h3 { 151 - margin: 0 0 8px; 152 - color: @text; 153 - font-size: 18px; 154 - } 155 - 156 - p { 157 - margin: 0; 158 - color: @muted; 159 - line-height: 1.5; 160 - } 161 -} 162 - 163 -.product-gallery-panel { 164 - max-width: 1040px; 165 - margin: 20px auto 0; 166 - padding: 22px; 167 - 168 - h2 { 169 - margin-top: 0; 170 - } 171 - 172 - .gallery-note { 173 - max-width: 700px; 174 - margin: 0 auto 18px; 175 - color: @muted; 176 - text-align: center; 177 - line-height: 1.55; 178 - } 179 -} 180 - 181 -.product-gallery-placeholder { 182 - border: 1px dashed fade(@brand, 40%); 183 - background: fade(@brand, 5%); 184 - border-radius: @radius; 185 - min-height: 260px; 186 - padding: 28px; 187 - text-align: center; 188 - color: @muted; 189 - display: flex; 190 - align-items: center; 191 - justify-content: center; 192 -} 193 - 194 -.product-card-grid { 195 - max-width: 1040px; 196 - margin: 22px auto 0; 197 - display: grid; 198 - grid-template-columns: repeat(2, minmax(0, 1fr)); 199 - grid-gap: 18px; 200 -} 201 - 202 -.product-card { 203 - background: #fff; 204 - border: 1px solid @line; 205 - border-radius: @radius; 206 - box-shadow: @shadow-sm; 207 - padding: 22px; 208 - display: flex; 209 - flex-direction: column; 210 - 211 - .product-card-icon { 212 - width: 46px; 213 - height: 46px; 214 - border-radius: 50%; 215 - background: fade(@brand, 10%); 216 - color: @brand; 217 - display: flex; 218 - align-items: center; 219 - justify-content: center; 220 - margin-bottom: 14px; 221 - font-size: 18px; 222 - } 223 - 224 - h3 { 225 - margin: 0 0 8px; 226 - color: @text; 227 - } 228 - 229 - p { 230 - color: @muted; 231 - line-height: 1.55; 232 - } 233 - 234 - .card-link { 235 - margin-top: auto; 236 - 237 - a { 238 - color: @brand; 239 - font-weight: 800; 240 - } 241 - } 242 -} 243 - 244 -.cta-panel { 245 - max-width: 860px; 246 - margin: 0 auto; 247 - padding: 30px; 248 - border-radius: @radius; 249 - border: 1px solid fade(@brand, 20%); 250 - background: 251 - radial-gradient(34rem 12rem at 50% 0%, #E7FFF8 0%, #fff 70%); 252 - box-shadow: @shadow-sm; 253 - text-align: center; 254 - 255 - h2 { 256 - margin-top: 0; 257 - } 258 - 259 - p { 260 - color: @muted; 261 - line-height: 1.55; 262 - } 263 -} 264 - 265 -@media (max-width: 900px) { 266 - .product-layout, 267 - .product-feature-grid, 268 - .product-card-grid { 269 - grid-template-columns: 1fr; 270 - } 271 - 272 - .product-summary-card h2 { 273 - text-align: center; 274 - } 275 - 276 - .public-nav { 277 - gap: 14px; 278 - } 279 -} - contentType
-
... ... @@ -1,1 +1,0 @@ 1 -LESS - use
-
... ... @@ -1,1 +1,0 @@ 1 -onDemand