Changes for page products
Last modified by Alex Cotiugă on 2026/05/12 20:27
From version 1.1
edited by Alex Cotiugă
on 2026/05/12 19:51
on 2026/05/12 19:51
Change comment:
There is no comment for this version
To version 1.3
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
Summary
-
Page properties (1 modified, 0 added, 0 removed)
-
Objects (0 modified, 1 added, 0 removed)
Details
- Page properties
-
- Content
-
... ... @@ -1,0 +1,54 @@ 1 +{{velocity}} 2 +#set ($discard = $xwiki.ssx.use('PublicWebSite.WebHome')) 3 +{{html clean="false"}} 4 + 5 +<section class="page-header-compact" aria-labelledby="page-title"> 6 + <div class="container"> 7 + <p class="page-eyebrow">Agnease products</p> 8 + <h1 id="page-title">XWiki Applications and Extensions</h1> 9 + <p class="page-lead"> 10 + Practical XWiki extensions built to improve security, workflows, administration and long-term platform usability. 11 + </p> 12 + </div> 13 +</section> 14 + 15 +<section aria-labelledby="products-title"> 16 + <div class="container"> 17 + <h2 id="products-title">Available extensions</h2> 18 + 19 + <div class="product-card-grid"> 20 + <article class="product-card"> 21 + <div class="product-card-icon"> 22 + <i class="fa fa-lock" aria-hidden="true"></i> 23 + </div> 24 + 25 + <h3>XWiki Two-Factor Authentication</h3> 26 + 27 + <p> 28 + Add a second verification step to the standard XWiki login flow using time-based one-time codes. 29 + The extension is designed for organizations that want stronger account protection without replacing 30 + the standard XWiki authentication experience. 31 + </p> 32 + 33 + <p class="card-link"> 34 + <a href="$xwiki.getURL('products.xwiki-two-factor-authentication')">View extension</a> 35 + </p> 36 + </article> 37 + </div> 38 + </div> 39 +</section> 40 + 41 +<section class="cta-section"> 42 + <div class="container"> 43 + <div class="cta-panel"> 44 + <h2>Need a custom XWiki application?</h2> 45 + <p> 46 + Agnease also builds custom XWiki applications, workflows, integrations and extensions adapted to specific business processes. 47 + </p> 48 + <a class="btn btn-primary" href="$xwiki.getURL('contact.WebHome')">Contact Agnease</a> 49 + </div> 50 + </div> 51 +</section> 52 + 53 +{{/html}} 54 +{{/velocity}}
- XWiki.StyleSheetExtension[0]
-
- cache
-
... ... @@ -1,0 +1,1 @@ 1 +long - code
-
... ... @@ -1,0 +1,279 @@ 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,0 +1,1 @@ 1 +LESS - use
-
... ... @@ -1,0 +1,1 @@ 1 +onDemand