- Para Profissionais de Beleza
- Encomenda antes das 12h00, entregue no dia útil seguinte
- Pagamento seguro
- Pagamento seguro
SUMMER BREEZE
The summer nails that everyone wants!
With warm days approaching, we are pleased to introduce our latest summer collection SUMMER BREEZE. A beautiful range of nude shades that capture the essence of summer with a perfect blend of style and delicacy. Easy Breezy Summer Nails: discover 6 new BFLEX nudes!
SUMMER BREEZE ONLINE EVENT
BFLEX BOX 3
Nude nails are all the rage this summer! You've been asking in droves for new BFLEX nudes, and now they're here! Add these 6 new summer shades to your BFLEX nude range:
Wedding season is upon us! For many brides, this is a great reason to visit a nail salon for the first time. A first encounter with BFLEX can keep them coming back later. A natural nail treatment service with BFLEX is ideal for presenting non-typically gelled clients with a polished, natural look that lasts.
CHEEKY: a nude with a coral blush
BERRY: A sweet pastel lilac with a hint of berries.
BREEZY: A refreshing baby blue with pastel breeze
CREAMY: A delicate cream color
BUNNY: A soft creamy nude color
LOVELY: A delightful pastel pink nude shade
![Hot summer nail colours](/Admin/Public/GetImage.ashx?Image=/Files/Images/Collections/Bcolour.jpg&Crop=7&Format=webp&Quality=90&Compression=80&Width=1200)
![Hot summer nail colours](/Admin/Public/GetImage.ashx?Image=/Files/Images/Collections/Bcolour2.jpg&Crop=7&Format=webp&Quality=90&Compression=80&Width=1200)
SUMMER CLASSICS
Error executing template "Designs/ProNails_generated/Paragraph/MultiColumnParagraph.cshtml" System.NullReferenceException: Object reference not set to an instance of an object. at Bluedesk.DynamicWeb.ItemTypes.CTAButton.GetLink(PageView pv, String navigationtag) at CompiledRazorTemplates.Dynamic.RazorEngine_b36244a70283498ea2718ae79e05723b.<>c__DisplayClass9_0.<RenderContentArea>b__0(TextWriter __razor_helper_writer) in D:\dynamicweb.net\Solutions\Bluedesk\pronails.cloud.dynamicweb-cms.com\files\Templates\Designs\ProNails_generated\Paragraph\MultiColumnParagraph.cshtml:line 709 at CompiledRazorTemplates.Dynamic.RazorEngine_b36244a70283498ea2718ae79e05723b.Execute() in D:\dynamicweb.net\Solutions\Bluedesk\pronails.cloud.dynamicweb-cms.com\files\Templates\Designs\ProNails_generated\Paragraph\MultiColumnParagraph.cshtml:line 635 at RazorEngine.Templating.TemplateBase.RazorEngine.Templating.ITemplate.Run(ExecuteContext context, TextWriter reader) at RazorEngine.Templating.RazorEngineService.RunCompile(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag) at RazorEngine.Templating.RazorEngineServiceExtensions.<>c__DisplayClass16_0.<RunCompile>b__0(TextWriter writer) at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter) at Dynamicweb.Rendering.RazorTemplateRenderingProvider.Render(Template template) at Dynamicweb.Rendering.TemplateRenderingService.Render(Template template) at Dynamicweb.Rendering.Template.RenderRazorTemplate()
1 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> 2 @using Dynamicweb; 3 @using Dynamicweb.Content.Items; 4 @using System.Web; 5 @using Bluedesk.Tools.DynamicWeb.ExtensionMethods; 6 @using Bluedesk.DynamicWeb.ItemTypes; 7 8 9 @{ 10 11 var paragraphID = Pageview.CurrentParagraph.ID; 12 13 MultiColumnParagraph _data = Dynamicweb.Services.Items.GetItem("MultiColumnParagraph", Pageview.CurrentParagraph.ItemId).ToCodeFirstItem<MultiColumnParagraph>() ?? new MultiColumnParagraph(); 14 15 List<string> BackgroundConfigIdList = ((List<string>)Dynamicweb.Context.Current.Items["BackgroundConfigIdList"]) ?? new List<string>(); 16 BackgroundConfigIdList.Add(_data.BackgroundConfigurationID); 17 Dynamicweb.Context.Current.Items["BackgroundConfigIdList"] = BackgroundConfigIdList; 18 19 string ParagraphHeight = _data.Height == 0 ? "auto" : _data.Height + "px"; 20 string MobileParagraphHeight = _data.MobileHeight == 0 ? "auto" : _data.MobileHeight + "px"; 21 22 } 23 24 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> 25 @using Dynamicweb; 26 @using Dynamicweb.Content.Items; 27 @using Bluedesk.DynamicWeb.ItemTypes; 28 29 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> 30 @using Dynamicweb; 31 @using Dynamicweb.Content.Items; 32 @using Bluedesk.DynamicWeb.ItemTypes; 33 34 @functions { 35 36 Dictionary<string, string> GetFontConfiguration(string TextColor, FontConfigurationItemTab FontConfiguration) 37 { 38 var colorService = new ColorSwatchService(); 39 TextColor = !string.IsNullOrWhiteSpace(TextColor) ? TextColor : "" ; 40 TextColor = !TextColor.Contains("#") ? colorService.GetHexColor(Pageview.AreaID, TextColor) : TextColor; 41 Dictionary<string, string> FontConfig = new Dictionary<string, string>() { 42 { "textColor" , TextColor }, 43 { "fontSize" , FontConfiguration.FontSize }, 44 { "lineHeight", FontConfiguration.LineHeight}, 45 { "fontFamily" , FontConfiguration.FontConfiguration.FontFamily }, 46 { "fontWeight" , FontConfiguration.FontWeight }, 47 { "fontStyle" , FontConfiguration.FontStyle } 48 }; 49 return FontConfig; 50 } 51 52 public string GenerateButtonConfigVariables(ButtonConfiguration BC, MasterConfig mc, int areaId) 53 { 54 string ButtonLabelAlignment = BC.ButtonLabelAlignment; 55 switch (ButtonLabelAlignment) 56 { 57 case "align-left": 58 ButtonLabelAlignment = "flex-start"; 59 break; 60 case "align-center": 61 ButtonLabelAlignment = "center"; 62 break; 63 case "align-right": 64 ButtonLabelAlignment = "flex-end"; 65 break; 66 case "align-full": 67 ButtonLabelAlignment = "space-between"; 68 break; 69 default: 70 ButtonLabelAlignment = "flex-start"; 71 break; 72 } 73 74 var btnStyleBlock = new System.Text.StringBuilder(); 75 76 // General Config 77 btnStyleBlock.Append(GenerateCssVar("btn-min-height", $"{mc.GeneralConfiguration.ButtonHeight}px")); 78 btnStyleBlock.Append(GenerateCssVar("btn-border-radius", $"{mc.GeneralConfiguration.RoundedCornerValue}px")); 79 80 // Button Config 81 btnStyleBlock.Append(GenerateCssVar("btn-border-width", $"{BC.BorderSize.ToString()}px")); 82 btnStyleBlock.Append(GenerateCssVar("btn-label-alignment", ButtonLabelAlignment)); 83 84 // Button Config Tab 85 btnStyleBlock.Append(GenerateCssVar("btn-bg-color", BC.ButtonColorConfiguration.BackgroundColor.GetColorCode(areaId))); 86 btnStyleBlock.Append(GenerateCssVar("btn-font-color", BC.ButtonColorConfiguration.FontColor.GetColorCode(areaId))); 87 btnStyleBlock.Append(GenerateCssVar("btn-border-color", BC.ButtonColorConfiguration.BorderColor.GetColorCode(areaId))); 88 89 // Button Config Hover tab 90 btnStyleBlock.Append(GenerateCssVar("btn-bg-color-hover", BC.ButtonHoverColorConfiguration.BackgroundColor.GetColorCode(areaId))); 91 btnStyleBlock.Append(GenerateCssVar("btn-font-color-hover", BC.ButtonHoverColorConfiguration.FontColor.GetColorCode(areaId))); 92 btnStyleBlock.Append(GenerateCssVar("btn-border-color-hover", BC.ButtonHoverColorConfiguration.BorderColor.GetColorCode(areaId))); 93 94 // Button Config Font Config 95 btnStyleBlock.Append(GenerateCssVar("btn-font-size", BC.FontConfiguration.FontSize)); 96 btnStyleBlock.Append(GenerateCssVar("btn-font-config-color", BC.FontConfiguration.Color.GetColorCode(areaId))); 97 btnStyleBlock.Append(GenerateCssVar("btn-font-line-height", BC.FontConfiguration.LineHeight)); 98 btnStyleBlock.Append(GenerateCssVar("btn-font-family", BC.FontConfiguration.FontConfiguration.FontFamily)); 99 btnStyleBlock.Append(GenerateCssVar("btn-font-weight", BC.FontConfiguration.FontWeight)); 100 btnStyleBlock.Append(GenerateCssVar("btn-font-transform", BC.FontConfiguration.FontStyle)); 101 102 return btnStyleBlock.ToString(); 103 } 104 105 public string GenerateCssVar(string name, string value) 106 { 107 if (!string.IsNullOrWhiteSpace(value)) { 108 return $"--{name}: {value};"; 109 } else { 110 return ""; 111 } 112 } 113 } 114 115 116 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> 117 @using Dynamicweb; 118 @using Dynamicweb.Content.Items; 119 @using Bluedesk.DynamicWeb.ItemTypes; 120 @using Bluedesk.DynamicWeb.ItemTypes.Configuration; 121 122 123 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> 124 @using Dynamicweb; 125 @using Dynamicweb.Content.Items; 126 @using Bluedesk.DynamicWeb.ItemTypes; 127 @using Bluedesk.DynamicWeb.ItemTypes.Extensions; 128 @using Bluedesk.DynamicWeb.ItemTypes.Configuration; 129 @using Bluedesk.DynamicWeb.ItemTypes.Settings.Configuration; 130 @using Dynamicweb; 131 @using Dynamicweb.Frontend 132 @using Bluedesk.DynamicWeb.ItemTypes.BaseSolution; 133 134 @helper RenderButton(CTAButton button, PageView Pageview) 135 { 136 137 if (!string.IsNullOrWhiteSpace(button.GetLink(Pageview))) 138 { 139 string Template = button.GetButtonTemplate().Replace("{{ ButtonLink }}", button.GetLink(Pageview)); 140 @Template; 141 } 142 } 143 144 145 @{ 146 147 var colorService = new ColorSwatchService(); 148 149 string fullWidthContainerClass = _data.Fullwidth ? "" : "container"; 150 151 string backgroundClass = !string.IsNullOrWhiteSpace(_data.BackgroundConfiguration.BackgroundClass) ? string.Format("bg-{0}", _data.BackgroundConfiguration.BackgroundClass) : ""; 152 string backgroundStyle = !string.IsNullOrWhiteSpace(_data.BackgroundConfiguration.BackgroundColor) ? $"background-color: {_data.BackgroundConfiguration.BackgroundColor}; " : ""; 153 backgroundStyle += !string.IsNullOrWhiteSpace(_data.BackgroundConfiguration.BackgroundImage) ? $"background-image: url({_data.BackgroundConfiguration.BackgroundImage}); " : ""; 154 155 // string backgroundClass = "null"; 156 // string backgroundStyle = ""; 157 } 158 159 160 @functions { 161 //string getbackgroundclass(string backgroundClass) 162 //{ 163 // return !string.IsNullOrWhiteSpace(backgroundClass) ? string.Format("bg-{0}", backgroundClass) : ""; 164 //} 165 } 166 167 @helper CTAParagraphImage( 168 ParagraphImageResizable Image, 169 bool hasContent, 170 bool ImageAsBackground, 171 string ImagePosition, 172 bool ParallaxImage, 173 bool Fullwidth, 174 string imagesHeight, 175 double ColumnWidthSize, 176 int AnimationDuration = 300, 177 bool AnimateHalfBlock = false 178 ) 179 { 180 if (!string.IsNullOrWhiteSpace(Image.Image)) 181 { 182 183 string image = !string.IsNullOrWhiteSpace(Image.Image) ? Image.Image : null; 184 imagesHeight = hasContent ? imagesHeight : "100%"; 185 imagesHeight = !string.IsNullOrWhiteSpace(imagesHeight) ? "height: " + imagesHeight + ";" : ""; 186 187 string imageParrallax = ParallaxImage ? "rellax" : ""; 188 string imageAsBackground = ImageAsBackground ? "cta-paragraph__image--is-background" : ""; 189 double imageWidth = 2000; 190 191 imageWidth = Fullwidth ? imageWidth : 1200; 192 imageWidth = !ImageAsBackground ? imageWidth * ColumnWidthSize : imageWidth; 193 194 string strImageWidth = imageWidth + "px"; 195 string strImageWidthSize = imageWidth + "w"; 196 197 string ImageUrl; 198 if (image.EndsWith(".gif")) 199 { 200 ImageUrl = image; 201 } 202 else 203 { 204 ImageUrl = "/Admin/Public/GetImage.ashx?Image=" + image + "&Crop=7&Format=webp&Quality=90&Compression=80"; 205 ImageUrl = ImageUrl.Replace("?x", "&x"); 206 } 207 208 string animationDirection = AnimateHalfBlock ? ImagePosition.Equals("right") ? "fade-left" : "fade-right" : ""; 209 210 if (!string.IsNullOrWhiteSpace(Image.Image)) 211 { 212 213 <figure class="cta-paragraph__image-container @imageAsBackground @Image.PositionY @Image.PositionX" style="@imagesHeight" data-aos="@animationDirection" data-aos-duration="@AnimationDuration"> 214 215 <picture class="cta-paragraph__image @Image.BackgroundSize @imageParrallax"> 216 @if (ImageUrl.EndsWith(".gif")) 217 { 218 <source media="(max-width: 400px)" srcset="@ImageUrl&Width=400"> 219 <source media="(max-width: 994px)" srcset="@ImageUrl&Width=994"> 220 <img src="@ImageUrl" loading="lazy" alt="@Image.ImageAlt" class="cta-paragraph__image @Image.BackgroundSize @imageParrallax" width="1980" height="500"> 221 } 222 else 223 { 224 <source media="(max-width: 400px)" srcset="@ImageUrl&Width=400"> 225 <source media="(max-width: 994px)" srcset="@ImageUrl&Width=994"> 226 <img src="@ImageUrl&Width=@imageWidth" loading="lazy" alt="@Image.ImageAlt" class="cta-paragraph__image @Image.BackgroundSize @imageParrallax" width="1980" height="500"> 227 } 228 </picture> 229 230 </figure> 231 } 232 } 233 } 234 235 @helper CTAParagraphContent( 236 int paragraphID, 237 ParagraphHeader Header, 238 ParagraphHeader SubHeader, 239 ParagraphContent Content, 240 CTAButton Button, 241 CTAButton ExtraButton, 242 ParagraphImage Image, 243 bool strCenterVertical, 244 string ImagePosition = "", 245 int AnimationDuration = 300, 246 bool AnimateHalfBlock = false 247 ) 248 { 249 250 bool hasImage = !string.IsNullOrWhiteSpace(Image.Image) ? true : false; 251 string noImageClass = hasImage ? "" : "no-image"; 252 253 string centerTextClass = strCenterVertical ? "text-center" : ""; 254 string centerContent = !string.IsNullOrWhiteSpace(Image.Image) ? "" : "cta-paragraph__content--center"; 255 256 string paragraphInstanceClass = "cta-paragraph__content--" + paragraphID; 257 258 string animationDirection = (AnimateHalfBlock && hasImage) ? ImagePosition.Equals("right") ? "fade-right" : "fade-left" : ""; 259 260 if (!string.IsNullOrWhiteSpace(Button.ButtonText) || !string.IsNullOrWhiteSpace(Content.Text) || !string.IsNullOrWhiteSpace(Header.HeaderFormatted("cta-paragraph__header"))) 261 { 262 263 <section class="cta-paragraph__content @paragraphInstanceClass @centerContent @noImageClass" data-aos="@animationDirection" data-aos-duration="@AnimationDuration"> 264 265 <article class="cta-paragraph__content-container @noImageClass"> 266 267 @if (!string.IsNullOrWhiteSpace(Header.HeaderFormatted("cta-paragraph__header"))) 268 { 269 <header class="cta-paragraph__header @centerTextClass"> 270 @if (SubHeader != null) 271 { 272 @SubHeader.HeaderFormatted("cta-paragraph__subheader") 273 } 274 @Header.HeaderFormatted("cta-paragraph__header") 275 </header> 276 } 277 278 @if (!string.IsNullOrWhiteSpace(Content.Text)) 279 { 280 <div class="cta-paragraph__text @centerTextClass">@Content.Text</div> 281 } 282 283 @if (!string.IsNullOrWhiteSpace(Button.GetLink(Pageview)) && !string.IsNullOrWhiteSpace(Button.ButtonText)) 284 { 285 <nav class="cta-paragraph__btn-navigation @centerTextClass"> 286 @RenderButton(Button, Pageview) 287 @RenderButton(ExtraButton, Pageview) 288 </nav> 289 } 290 291 </article> 292 </section> 293 294 } 295 296 } 297 298 @helper CTAParagraphVideo(ParagraphVideo Video, string imagesHeight) 299 { 300 if (!string.IsNullOrWhiteSpace(Video.YoutubeLink) || !string.IsNullOrWhiteSpace(Video.VimeoLink)) 301 { 302 string YoutubeID = Video.YoutubeId; 303 string YoutubeLink = Video.YoutubeLink; 304 305 string VimeoID = Video.VimeoId; 306 string VimeoLink = Video.VimeoLink; 307 308 int CleanVideo = Video.Clean ? 1 : 0; 309 int ShowControls = Video.ShowControls ? 1 : 0; 310 int AutoPlay = Video.AutoPlay ? 1 : 0; 311 int LoopVideo = Video.LoopVideo ? 1 : 0; 312 int MuteAudio = Video.MuteAudio ? 1 : 0; 313 string hideControlsClass = Video.ShowControls ? "video-player-wrapper--hidecontrols" : ""; 314 string origin = Dynamicweb.Environment.Helpers.LinkHelper.GetHttpDomain(); 315 imagesHeight = !string.IsNullOrWhiteSpace(imagesHeight) ? "height: " + imagesHeight + ";" : ""; 316 317 if (!string.IsNullOrWhiteSpace(YoutubeLink)) 318 { 319 if(AutoPlay == 1) 320 { 321 <section class="cta-paragraph__video-container" style="@imagesHeight"> 322 <div class=""> 323 <div class="video-player-wrapper @hideControlsClass"> 324 <iframe class="video-player" loading="lazy" data-video="@YoutubeID" frameborder="0" allowfullscreen allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" title="YouTube video player" src="https://www.youtube-nocookie.com/embed/@YoutubeID?autoplay=@AutoPlay&controls=@ShowControls&loop=@LoopVideo&playlist=@YoutubeID&playsinline=1&modestbranding=@CleanVideo&mute=@MuteAudio&rel=0&enablejsapi=1&origin=@origin&disablekb=0"></iframe> 325 </div> 326 </div> 327 </section> 328 } 329 else 330 { 331 <lite-youtube videoid="@YoutubeID" params="controls=@ShowControls&loop=@LoopVideo&playlist=@YoutubeID&playsinline=1&modestbranding=@CleanVideo&mute=@MuteAudio&rel=0&enablejsapi=1&origin=@origin&disablekb=0"></lite-youtube> 332 } 333 } 334 if (!string.IsNullOrWhiteSpace(VimeoLink)) 335 { 336 <section class="cta-paragraph__video-container" style="@imagesHeight"> 337 <div class=""> 338 <div class="video-player-wrapper"> 339 <iframe class="video-player" loading="lazy" data-video="@VimeoID" frameborder="0" allowfullscreen allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" title="Vimeo video player" src="https://player.vimeo.com/video/@VimeoID?title=0&byline=0&portrait=0&autoplay=@AutoPlay&controls=@ShowControls&loop=@LoopVideo&muted=@MuteAudio"></iframe> 340 </div> 341 </div> 342 </section> 343 } 344 } 345 } 346 347 @helper CTAParagraphIcon(ParagraphIcon Icon, bool strCenterVertical) 348 { 349 if (!string.IsNullOrWhiteSpace(Icon.FaIcon)) 350 { 351 string centerIconClass = strCenterVertical ? "justify-center" : "justify-start"; 352 string iconSizeClass = string.Format("cta-paragraph__icon--{0}", Icon.FaIconSize); 353 354 <div class="cta-paragraph__icon-container"> 355 <div class="cta-paragraph__icon-inner-container @centerIconClass"> 356 <span class="cta-paragraph__icon @iconSizeClass">@Icon.FaIcon</span> 357 </div> 358 </div> 359 } 360 } 361 362 @helper RenderContentAlignment(BackgroundConfiguration data) 363 { 364 365 switch (data.ContentElementAlign) 366 { 367 case "align-left": 368 <text> 369 align-items: flex-start; 370 text-align: left; 371 </text> 372 break; 373 case "align-center": 374 <text> 375 align-items: center; 376 text-align: center; 377 </text> 378 break; 379 case "align-right": 380 <text> 381 align-items: flex-end; 382 text-align: right; 383 </text> 384 break; 385 case "align-full": 386 <text> 387 align-items: flex-start; 388 text-align: justify; 389 </text> 390 break; 391 } 392 393 } 394 395 396 @{ 397 398 string backgroundImageRepeatClass = _data.BackgroundConfiguration.BackgroundImageRepeat; 399 string backgroundImageSizeClass = ""; 400 401 string BackgroundImagePositionX = _data.BackgroundConfiguration.BackgroundImagePositionX; 402 string BackgroundImagePositionY = _data.BackgroundConfiguration.BackgroundImagePositionY; 403 404 string BackgroundImagePositionClass = ""; 405 406 if (backgroundImageRepeatClass == "no-repeat") 407 { 408 BackgroundImagePositionClass = BackgroundImagePositionY + "-" + BackgroundImagePositionX; 409 backgroundImageSizeClass = _data.BackgroundConfiguration.BackgroundImageSize; 410 } 411 412 string ctaBackgroundColor = _data.BackgroundConfiguration.BackgroundColor; 413 414 ctaBackgroundColor = colorService.GetHexColor(Pageview.AreaID, ctaBackgroundColor); 415 416 string BackgroundGradient = _data.BackgroundConfiguration.BackgroundGradient; 417 418 string contentBackgroundColor = _data.BackgroundConfiguration.contentBackgroundColor; 419 string contentBorderColor = _data.BackgroundConfiguration.contentBorderColor; 420 421 string contentBorderSize = _data.BackgroundConfiguration.contentBorderSize + "px"; 422 423 string contentGutterClass = _data.BackgroundConfiguration.contentGutter; 424 string BackgroundPadding = _data.BackgroundConfiguration.backgroundPadding; 425 426 bool Containerfit = _data.BackgroundConfiguration.ContainerFit == "Fit" ? true : false; 427 428 contentBackgroundColor = colorService.GetHexColor(Pageview.AreaID, contentBackgroundColor); 429 contentBorderColor = colorService.GetHexColor(Pageview.AreaID, contentBorderColor); 430 431 string AnimateDirection = !string.IsNullOrWhiteSpace(_data.AnimateDirection) ? _data.AnimateDirection : ""; 432 int AnimationDuration = _data.AnimateDuration; 433 string DataAosValue = ""; 434 435 switch (AnimateDirection) 436 { 437 case "left": 438 DataAosValue = "fade-left"; 439 break; 440 441 case "right": 442 DataAosValue = "fade-right"; 443 break; 444 445 case "up": 446 DataAosValue = "fade-up"; 447 break; 448 449 case "down": 450 DataAosValue = "fade-down"; 451 break; 452 453 case "": 454 case "none": 455 // No action 456 break; 457 } 458 459 } 460 461 <style> 462 @_data.BackgroundConfiguration.Stylesheet 463 </style> 464 465 <style> 466 467 @@media screen and (max-width: 991px) { 468 .multicolumn--@paragraphID .multicolumn__item { 469 height: @MobileParagraphHeight !important; 470 } 471 } 472 473 @@media screen and (min-width: 991px) { 474 .multicolumn--@paragraphID .multicolumn__item { 475 height: @ParagraphHeight !important; 476 } 477 } 478 479 .multicolumn--@paragraphID { 480 background-color: @ctaBackgroundColor; 481 @if (!string.IsNullOrWhiteSpace(BackgroundGradient)) 482 { 483 @BackgroundGradient 484 } 485 } 486 487 .multicolumn--@paragraphID .cta-paragraph { 488 background-color: @contentBackgroundColor; 489 border: @contentBorderSize @contentBorderColor solid; 490 } 491 492 .multicolumn--@paragraphID .cta-paragraph__content-container 493 { 494 @RenderContentAlignment(_data.BackgroundConfiguration) 495 } 496 497 .multicolumn--@paragraphID .cta-paragraph__content { 498 @if (Containerfit) 499 { 500 <text> 501 flex-grow: 0; 502 </text> 503 } 504 } 505 506 .multicolumn--@paragraphID .cta-paragraph__image-container { 507 @if (Containerfit) 508 { 509 <text> 510 position: absolute; 511 top: 0; 512 left: 0; 513 right: 0; 514 bottom: 0; 515 </text> 516 } 517 } 518 519 .cta-paragraph--@paragraphID .cta-paragraph__btn-navigation { 520 @if (Containerfit) 521 { 522 523 switch (_data.BackgroundConfiguration.ContainerFitContentAlignment) 524 { 525 526 case "TopLeft": 527 case "MiddleLeft": 528 case "BottomLeft": 529 <text> 530 justify-content: flex-start; 531 </text> 532 break; 533 534 case "TopRight": 535 case "MiddleRight": 536 case "BottomRight": 537 <text> 538 justify-content: flex-end; 539 </text> 540 break; 541 542 543 case "TopCenter": 544 case "MiddleCenter": 545 case "BottomCenter": 546 <text> 547 justify-content: center; 548 </text> 549 break; 550 551 } 552 } 553 554 } 555 556 .multicolumn--@paragraphID .cta-paragraph { 557 @if (Containerfit) 558 { 559 560 switch (_data.BackgroundConfiguration.ContainerFitContentAlignment) { 561 case "TopLeft": 562 <text> 563 justify-content: flex-start; 564 align-items: flex-start; 565 </text> 566 break; 567 case "TopCenter": 568 <text> 569 justify-content: flex-start; 570 align-items: center; 571 </text> 572 break; 573 case "TopRight": 574 <text> 575 justify-content: flex-start; 576 align-items: flex-end; 577 </text> 578 break; 579 case "MiddleLeft": 580 <text> 581 justify-content: center; 582 align-items: flex-start; 583 </text> 584 break; 585 case "MiddleCenter": 586 <text> 587 justify-content: center; 588 align-items: center; 589 </text> 590 break; 591 case "MiddleRight": 592 <text> 593 justify-content: center; 594 align-items: flex-end; 595 </text> 596 break; 597 case "BottomLeft": 598 <text> 599 justify-content: flex-end; 600 align-items: flex-start; 601 </text> 602 break; 603 case "BottomCenter": 604 <text> 605 justify-content: flex-end; 606 align-items: center; 607 </text> 608 break; 609 case "BottomRight": 610 <text> 611 justify-content: flex-end; 612 align-items: flex-end; 613 </text> 614 break; 615 616 } 617 618 619 } 620 621 } 622 623 </style> 624 625 @if (_data != null) 626 { 627 <div class="multicolumn multicolumn--@paragraphID @backgroundClass @backgroundImageRepeatClass @BackgroundImagePositionClass @backgroundImageSizeClass @contentGutterClass @BackgroundPadding @_data.CssClass" data-paragraphid="@paragraphID" id="@paragraphID" style="@backgroundStyle" data-aos="@DataAosValue" data-aos-duration="@AnimationDuration"> 628 629 <div class="multicolumn__container @fullWidthContainerClass"> 630 @if (!string.IsNullOrWhiteSpace(_data.Header.HeaderFormatted())) 631 { 632 <header class="multicolumn__header-wrapper">@_data.Header.HeaderFormatted("cta-paragraph__header")</header> 633 } 634 635 @RenderContentArea(_data, paragraphID) 636 </div> 637 638 </div> 639 } 640 641 @helper RenderContentArea(MultiColumnParagraph _data, int paragraphID) 642 { 643 644 if (_data.Paragraphs().Count > 0) 645 { 646 647 // string contentElementAlign = _data.BackgroundConfiguration.ContentElementAlign; 648 649 int colIndex = 0; 650 var colorService = new ColorSwatchService(); 651 652 string centerTextClass = _data.CenterText ? "items-center text-center" : "items-start text-left"; 653 string WarpElementsClass = !string.IsNullOrWhiteSpace(_data.WrapElements) ? _data.WrapElements : ""; 654 double ColumnWidthSize = 1; 655 656 bool Shadow = _data.BackgroundConfiguration.contentShadow; 657 string shadowClass = Shadow ? "contentShadow" : ""; 658 659 bool enableColumnAnimation = _data.AnimateDelayColumns; 660 string AnimateDirection = !string.IsNullOrWhiteSpace(_data.AnimateDirection) ? _data.AnimateDirection : ""; 661 int AnimationDuration = 0; 662 string DataAosValue = ""; 663 664 if (enableColumnAnimation) 665 { 666 AnimationDuration = _data.AnimateDuration; 667 switch (AnimateDirection) 668 { 669 case "left": 670 DataAosValue = "fade-left"; 671 break; 672 673 case "right": 674 DataAosValue = "fade-right"; 675 break; 676 677 case "up": 678 DataAosValue = "fade-up"; 679 break; 680 681 case "down": 682 DataAosValue = "fade-down"; 683 break; 684 685 case "": 686 case "none": 687 // No action 688 break; 689 } 690 } 691 692 <div class="grid-container @WarpElementsClass"> 693 694 @foreach (ParagraphColumn p in _data.Paragraphs()) 695 { 696 697 bool hasContent = !string.IsNullOrWhiteSpace(p.Button().ButtonText) || !string.IsNullOrWhiteSpace(p.Content().Text) || !string.IsNullOrWhiteSpace(p.Header().HeaderFormatted()); 698 string ImageContainerFixed = hasContent ? "cta-paragraph__image-container--fixed" : ""; 699 string imagesHeight = hasContent ? _data.ImageHeight.ToString() + "px" : "100%"; 700 imagesHeight = imagesHeight == "0px" ? "auto" : imagesHeight; 701 702 if (_data.BackgroundConfiguration.ContainerFit == "Fit") 703 { 704 imagesHeight = "auto"; 705 } 706 707 string newWindow = p.Button().NewWindow ? "target='_blank'" : ""; 708 string ariaLabel = !string.IsNullOrWhiteSpace(p.Button().ButtonAriaLabel) ? "aria-label='" + p.Button().ButtonAriaLabel + "'" : ""; 709 bool clickableBlock = !string.IsNullOrWhiteSpace(p.Button().GetLink(Pageview)) && _data.Clickable; 710 string clickableClass = clickableBlock ? "cta-paragraph__container--clickable" : ""; 711 712 ColumnWidthSize = GetColumnsize(p.LargeDevices); 713 714 var animationDelay = enableColumnAnimation ? colIndex * 100 : 0; 715 colIndex++; 716 717 <div class="multicolumn__item grid-@p.SmallDevices md-grid-@p.MediumDevices lg-grid-@p.LargeDevices" data-aos="@DataAosValue" data-aos-duration="@AnimationDuration" data-aos-delay="@animationDelay"> 718 719 <section class="cta-paragraph config--@_data.BackgroundConfigurationID @clickableClass @shadowClass"> 720 721 @CTAParagraphImage( 722 p.Image(), 723 hasContent, 724 false, 725 null, 726 false, 727 _data.Fullwidth, 728 imagesHeight, 729 ColumnWidthSize 730 ) 731 732 @CTAParagraphVideo( 733 p.Video(), 734 imagesHeight 735 ) 736 737 @CTAParagraphIcon( 738 p.Icon(), 739 _data.CenterText 740 ) 741 742 @CTAParagraphContent( 743 paragraphID, 744 p.Header(), 745 p.Subheader(), 746 p.Content(), 747 p.Button(), 748 p.ExtraButton(), 749 p.Image(), 750 _data.CenterText 751 ) 752 753 @if (clickableBlock) 754 { 755 <a href="@p.Button().GetLink(Pageview)" class="cta-paragraph__clickable" @newWindow @ariaLabel></a> 756 } 757 758 </section> 759 </div> 760 } 761 </div> 762 } 763 764 } 765 766 767 @functions{ 768 769 double GetColumnsize(string DesktopColumnSize) 770 { 771 772 double ColumnWidthSize = 1; 773 774 switch (DesktopColumnSize) 775 { 776 case "auto": 777 ColumnWidthSize = 1; 778 break; 779 780 case "25p": 781 ColumnWidthSize = 0.25; 782 break; 783 784 case "33p": 785 ColumnWidthSize = 0.33; 786 break; 787 788 case "50p": 789 ColumnWidthSize = 0.5; 790 break; 791 792 case "66p": 793 ColumnWidthSize = 0.66; 794 break; 795 796 case "75p": 797 ColumnWidthSize = 0.75; 798 break; 799 800 case "full": 801 ColumnWidthSize = 1; 802 break; 803 } 804 805 return ColumnWidthSize; 806 807 } 808 809 810 // Check if this carousel contains only images (logo slider) 811 bool checkOnlyImages(Carousel _data) 812 { 813 814 int amountColumns = _data.CarouselItems.Count; // Amount of the columns in backend, filled by user 815 int emptyColumn = 0; 816 817 // Loop through all the columns 818 foreach (var column in _data.CarouselItems) 819 { 820 // If button is empty AND content is empty AND header is empty => this is img only 821 if (string.IsNullOrWhiteSpace(column.Button.ButtonText) && string.IsNullOrWhiteSpace(column.Content.Text) && string.IsNullOrWhiteSpace(column.Header.HeaderFormatted())) 822 { 823 emptyColumn++; 824 } 825 } 826 827 bool emptyColumnResult = emptyColumn == amountColumns ? true : false; 828 829 return emptyColumnResult; 830 831 } 832 } 833 834
![Biab colour nails](/Admin/Public/GetImage.ashx?Image=/Files/Images/Collections/Afbeelding1.jpg&Crop=7&Format=webp&Quality=90&Compression=80&Width=1200)