Nulla posuere neque tellus enim ante maximus

This is a max width test to see if it is wrapping the text or not

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec tempor facilisis enim, in tincidunt felis bibendum a. Etiam ligula sem, hendrerit vitae dolor in, pretium suscipit nibh. Nullam malesuada, magna a volutpat porta, augue arcu consequat tortor, ac varius augue nulla in ante. Nulla posuere neque tellus, et tempus nunc pulvinar ut. Ut vitae luctus erat. Vestibulum mattis elit sapien, euismod elementum sem semper ac. Aliquam nec enim vel sem congue dignissim. Pellentesque sagittis augue eget leo sodales efficitur. Nam luctus est arcu, eget cursus ante maximus nec. Duis diam nisl, gravida id iaculis eu, dictum ac dui. Proin suscipit scelerisque mattis. Nulla facilisi. Proin tristique lorem at risus laoreet sollicitudin.

Nulla facilisi. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Duis sit amet lorem feugiat, sollicitudin turpis in, ullamcorper dui. Praesent imperdiet, metus at condimentum pellentesque, nisl lacus rhoncus libero, at accumsan lacus ante non mauris. Nunc aliquam, dolor sit amet finibus fringilla, arcu quam luctus diam, ac commodo metus dui nec lacus. Donec urna justo, euismod ut velit eu, bibendum eleifend quam. Pellentesque sem mauris, ornare in bibendum nec, dignissim sit amet ante. Quisque congue, nisi sed fringilla luctus, odio nunc posuere nibh, sed viver

Nulla posuere neque

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec tempor facilisis enim, in tincidunt felis bibendum a. Etiam ligula sem, hendrerit vitae dolor in, pretium suscipit nibh. Nullam malesuada, magna a volutpat porta, augue arcu consequat tortor, ac varius augue nulla in ante.

Nulla posuere neque

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec tempor facilisis enim, in tincidunt felis bibendum a. Etiam ligula sem, hendrerit vitae dolor in, pretium suscipit nibh. Nullam malesuada, magna a volutpat porta, augue arcu consequat tortor, ac varius augue nulla in ante.

Poster with image

Nam ac ex ut erat aliquet venenatis eget

Discover more

Feature with icon

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Feature with icon

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Feature with icon

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Feature with icon

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Section header subtitle

Section header title

Left section header subtitle

Left section header Title

Text and image (vertical image)

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque pretium finibus erat et mollis. Praesent a libero consequat, pretium turpis eu, dictum ante.

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque pretium finibus erat et mollis. Praesent a libero consequat, pretium turpis eu, dictum ante. Curabitur sagittis, elit vitae placerat convallis, lectus sapien lobortis eros, eget finibus purus erat non odio. Sed sollicitudin velit eu metus porttitor, et faucibus augue pharetra. Maecenas malesuada rutrum laoreet. Curabitur auctor et enim vel rutrum. Duis condimentum massa tortor, id vestibulum urna fringilla a. In condimentum justo ut nibh ultrices, in aliquet lacus aliquet. Maecenas consectetur auctor aliquam. Phasellus bibendum ullamcorper mauris non efficitur. Vivamus maximus metus et neque commodo euismod. Cras ac elit libero. Nulla mattis faucibus nunc, sodales posuere tellus cursus euismod.

Text and image (horisontal image)

Vivamus rhoncus arcu sed maximus mattis

Vestibulum vitae tortor quis ipsum venenatis venenatis eget viverra lacus. Nam dignissim vel dui sit amet dictum. Fusce ut vulputate nisl. Aenean quis magna sem. Curabitur efficitur, urna eu rhoncus pulvinar, risus dui elementum arcu, id eleifend lectus mauris porta ex. Sed faucibus, sapien in rhoncus tincidunt, neque lacus ornare quam, at blandit leo augue et sem. Curabitur vel lacinia quam.

Ut vitae feugiat neque, eu convallis turpis. Integer eu arcu metus. Vivamus id suscipit ligula. Quisque porta ut ligula vitae tincidunt. Quisque quis sodales nisl. Etiam vulputate, nulla quis luctus egestas, nunc libero imperdiet est, quis maximus tortor elit vitae felis. Aliquam tincidunt, massa sit amet accumsan congue, tellus ipsum egestas justo, in tempor est eros sed ipsum. Nam in sapien libero.

Vivamus rutrum nunc quis tellus hendrerit lacinia. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Vivamus tincidunt rutrum diam, nec bibendum nulla. Integer tempus vulputate neque in bibendum. Etiam pellentesque rhoncus nibh, nec tincidunt nibh iaculis vel. Aenean viverra elit tellus, eu sagittis quam porttitor vitae.

Error compiling template "Designs/Swift/Paragraph/Swift_Carousel.cshtml"
Line 77: No overload for method 'RenderItem' takes 8 arguments
Line 83: The name 'helper' does not exist in the current context
Line 99: The name 'active' does not exist in the current context
Line 105: The name 'theme' does not exist in the current context
Line 109: The name 'RenderImage' does not exist in the current context
Line 109: The name 'item' does not exist in the current context
Line 111: The name 'layout' does not exist in the current context
Line 114: The name 'alignment' does not exist in the current context
Line 117: The name 'alignment' does not exist in the current context
Line 120: The name 'alignment' does not exist in the current context
Line 123: The name 'alignment' does not exist in the current context
Line 126: The name 'alignment' does not exist in the current context
Line 129: The name 'alignment' does not exist in the current context
Line 132: The name 'alignment' does not exist in the current context
Line 135: The name 'alignment' does not exist in the current context
Line 138: The name 'alignment' does not exist in the current context
Line 146: The name 'carouselWidth' does not exist in the current context
Line 148: The name 'alignment' does not exist in the current context
Line 152: The name 'RenderTitle' does not exist in the current context
Line 152: The name 'item' does not exist in the current context
Line 152: The name 'maxWidth' does not exist in the current context
Line 154: The name 'RenderText' does not exist in the current context
Line 154: The name 'item' does not exist in the current context
Line 154: The name 'maxWidth' does not exist in the current context
Line 156: The name 'RenderButton' does not exist in the current context
Line 156: The name 'item' does not exist in the current context
Line 158: The name 'helper' does not exist in the current context
Line 178: The name 'imageFilter' does not exist in the current context
Line 181: The name 'item' does not exist in the current context
Line 181: The name 'parms' does not exist in the current context
Line 183: The name 'helper' does not exist in the current context
Line 191: The name 'maxWidth' does not exist in the current context
Line 194: The name 'item' does not exist in the current context
Line 196: The name 'helper' does not exist in the current context
Line 205: The name 'maxWidth' does not exist in the current context
Line 208: The name 'item' does not exist in the current context
Line 210: The name 'helper' does not exist in the current context
Line 282: The name 'link' does not exist in the current context
Line 286: The name 'buttonStyle' does not exist in the current context
Line 288: The name 'StretchedLink' does not exist in the current context
Line 291: The name 'target' does not exist in the current context
Line 293: The name 'rel' does not exist in the current context
Line 295: The name 'item' does not exist in the current context
Line 306: The name 'link' does not exist in the current context
Line 309: The name 'target' does not exist in the current context
Line 311: The name 'rel' does not exist in the current context
Line 313: The name 'StretchedLink' does not exist in the current context

1 // <auto-generated/> 2 #pragma warning disable 1591 3 namespace CompiledRazorTemplates.Dynamic 4 { 5 #line hidden 6 using System.Threading.Tasks; 7 using System; 8 using System.Collections.Generic; 9 using System.Linq; 10 using Dynamicweb.Ecommerce.ProductCatalog; 11 using System.Web; 12 using Dynamicweb.Frontend; 13 internal class RazorEngine_0b80b0828613456d94229bec1881640b : Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> 14 { 15 #pragma warning disable 1998 16 public async override global::System.Threading.Tasks.Task ExecuteAsync() 17 { 18 WriteLiteral("\n"); 19 bool movePageBehind = false; bool isFirstPoster = false; string movePageBehindClass = ""; if (Pageview.Page.PropertyItem != null) { string headerCssClass = Pageview.Page.PropertyItem["MoveThisPageBehindTheHeader"] != null ? Pageview.Page.PropertyItem["MoveThisPageBehindTheHeader"].ToString() : "sticky-top"; movePageBehind = headerCssClass == "fixed-top" && !Pageview.IsVisualEditorMode ? true : false; if (movePageBehind) { movePageBehindClass = " poster-behind"; if (!Dynamicweb.Context.Current.Items.Contains("firstPosterIsRendered")) { isFirstPoster = true; Dynamicweb.Context.Current.Items.Add("firstPosterIsRendered", true); } } } var uniqueId = Pageview.CurrentParagraph.ID.ToString(); string title = Model.Item.GetString("Title"); var carouselItems = Model.Item?.GetItems("Carousel_Items") ?? Enumerable.Empty<Dynamicweb.Frontend.ItemViewModel>().ToList(); string enableControls = Model.Item.GetBoolean("EnableControls").ToString().ToLower(); string enableIndcators = Model.Item.GetBoolean("EnableIndicators").ToString().ToLower(); bool autoplay = Model.Item.GetBoolean("Autoplay"); string interval = (autoplay) ? Model.Item.GetString("Interval", "5000") : "0"; string enableAutoplay = autoplay.ToString().ToLower(); string animation = Model.Item.GetRawValueString("Animation", "carousel"); string carouselHeight = Model.Item.GetRawValueString("CarouselHeight", "h-100 min-vh-75 min-vh-md-100"); carouselHeight = carouselHeight == "small" ? "min-vh-25 min-vh-md-50" : carouselHeight; carouselHeight = carouselHeight == "medium" ? "min-vh-50 min-vh-md-75" : carouselHeight; carouselHeight = carouselHeight == "large" ? "min-vh-75 min-vh-md-100" : carouselHeight; string buttonSize = Model.Item.GetRawValueString("buttonSize", "regular"); buttonSize = buttonSize == "small" ? " btn-sm" : buttonSize; buttonSize = buttonSize == "regular" ? "" : buttonSize; buttonSize = buttonSize == "large" ? " btn-lg" : buttonSize; string carouselPadding = Model.Item.GetRawValueString("ContentPadding", ""); carouselPadding = carouselPadding == "none" ? "p-3 px-xl-3 py-xl-4" : carouselPadding; carouselPadding = carouselPadding == "small" ? "p-3 p-xl-4" : carouselPadding; carouselPadding = carouselPadding == "large" ? "p-4 p-xl-5" : carouselPadding; string titleFontSize = Model.Item.GetRawValueString("TitleFontSize", "display-1"); string subtitleFontSize = Model.Item.GetRawValueString("SubtitleFontSize", "fs-5"); WriteLiteral("\n<div"); 20 BeginWriteAttribute("id", " id=\"", 2661, "\"", 2684, 2); 21 WriteAttributeValue("", 2666, "carousel_", 2666, 9, true); 22 WriteAttributeValue("", 2675, uniqueId, 2675, 9, false); 23 EndWriteAttribute(); 24 BeginWriteAttribute("class", " class=\"", 2685, "\"", 2740, 3); 25 WriteAttributeValue("", 2693, "js-slider", 2693, 9, true); 26 WriteAttributeValue(" ", 2702, "item_", 2703, 6, true); 27 WriteAttributeValue("", 2708, Model.Item.SystemName.ToLower(), 2708, 32, false); 28 EndWriteAttribute(); 29 WriteLiteral(">\n\n"); 30 bool isFirst = true; WriteLiteral("\n"); 31 foreach (var item in carouselItems) { Write(RenderItem(item, isFirst, carouselHeight, carouselPadding, buttonSize, titleFontSize, subtitleFontSize, movePageBehindClass)); 32 isFirst = false; } WriteLiteral("\n</div>\n\n"); 33 Write(helper); 34 WriteLiteral(@" RenderItem(ItemViewModel item, bool isFirst, string carouselHeight, string carouselPadding, string buttonSize, string titleFontSize, string subtitleFontSize, string movePageBehindClass) { string layout = item.GetRawValueString(""Layout"", ""align-middle-center-text-center""); string carouselWidth = ""container-xl""; int xPos = item?.GetFile(""Image"")?.FocalPositionFromLeft ?? 50; int yPos = item?.GetFile(""Image"")?.FocalPositionFromTop ?? 50; string theme = !string.IsNullOrWhiteSpace(item.GetRawValueString(""Theme"")) ? "" theme "" + item.GetRawValueString(""Theme"").Replace("" "", """").Trim().ToLower() : """"; string active = isFirst ? ""active"" : """"; string alignment = """"; string maxWidth = item.GetRawValueString(""TextReadability"", ""max-width-on""); maxWidth = maxWidth == ""max-width-on"" ? ""mw-75ch d-inline-block"" : maxWidth; maxWidth = maxWidth == ""max-width-off"" ? """" : maxWidth; <div"); 35 BeginWriteAttribute("class", " class=\"", 3874, "\"", 3891, 1); 36 WriteAttributeValue("", 3882, active, 3882, 9, false); 37 EndWriteAttribute(); 38 WriteLiteral(">\n\t\t<div"); 39 BeginWriteAttribute("class", " class=\"", 3900, "\"", 3961, 4); 40 WriteAttributeValue("", 3908, "position-relative", 3908, 17, true); 41 WriteAttributeValue(" ", 3925, "h-100", 3926, 6, true); 42 WriteAttributeValue("", 3931, theme, 3931, 8, false); 43 WriteAttributeValue("", 3939, movePageBehindClass, 3939, 22, false); 44 EndWriteAttribute(); 45 WriteLiteral(">\n\t\t\t"); 46 Write(RenderImage(item)); 47 WriteLiteral("\n\n"); 48 switch (layout) { case "align-top-left-text-left": alignment = "text-start justify-content-start align-items-start"; break; case "align-top-center-text-center": alignment = "text-center justify-content-start align-items-start"; break; case "align-top-right-text-right": alignment = "text-end justify-content-start align-items-start"; break; case "align-middle-left-text-left": alignment = "text-start justify-content-center align-items-center"; break; case "align-middle-center-text-center": alignment = "text-center justify-content-center align-items-center"; break; case "align-middle-right-text-right": alignment = "text-end justify-content-center align-items-center"; break; case "align-bottom-left-text-left": alignment = "text-start justify-content-end align-items-end"; break; case "align-bottom-center-text-center": alignment = "text-center justify-content-end align-items-end"; break; case "align-bottom-right-text-right": alignment = "text-end justify-content-end align-items-end"; break; } WriteLiteral("\t\t\t<div class=\"position-relative h-100\">\n\t\t\t\t<div"); 49 BeginWriteAttribute("class", " class=\"", 5173, "\"", 5263, 7); 50 WriteAttributeValue("", 5181, "h-100", 5181, 5, true); 51 WriteAttributeValue(" ", 5186, "grid", 5187, 5, true); 52 WriteAttributeValue(" ", 5191, "grid-1", 5192, 7, true); 53 WriteAttributeValue(" ", 5198, carouselWidth, 5199, 16, false); 54 WriteAttributeValue(" ", 5215, carouselPadding, 5216, 16, false); 55 WriteAttributeValue(" ", 5232, alignment, 5233, 12, false); 56 WriteAttributeValue(" ", 5245, carouselHeight, 5246, 17, false); 57 EndWriteAttribute(); 58 WriteLiteral(">\n\t\t\t\t\t<div class=\"grid grid-1 gap-3 gap-md-4\">\n\t\t\t\t\t\t"); 59 Write(RenderTitle(item, titleFontSize, maxWidth)); 60 WriteLiteral("\n\t\t\t\t\t\t"); 61 Write(RenderText(item, subtitleFontSize, maxWidth)); 62 WriteLiteral("\n\t\t\t\t\t\t"); 63 Write(RenderButton(item, buttonSize)); 64 WriteLiteral("\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n}\n\n"); 65 Write(helper); 66 WriteLiteral(@" RenderImage(ItemViewModel item) { if (!string.IsNullOrEmpty(item.GetString(""Image""))) { var parms = new Dictionary<string, object>(); parms.Add(""cssClass"", ""h-100 w-100""); parms.Add(""columns"", Model.GridRowColumnCount); string imageFilter = item.GetRawValueString(""ImageFilter"", """"); imageFilter = imageFilter == ""no-filter"" ? """" : imageFilter; imageFilter = imageFilter == ""filter"" ? "" image-filter"" : imageFilter; <div"); 67 BeginWriteAttribute("class", " class=\"", 5951, "\"", 6019, 6); 68 WriteAttributeValue("", 5959, "position-absolute", 5959, 17, true); 69 WriteAttributeValue(" ", 5976, "top-0", 5977, 6, true); 70 WriteAttributeValue(" ", 5982, "bottom-0", 5983, 9, true); 71 WriteAttributeValue(" ", 5991, "end-0", 5992, 6, true); 72 WriteAttributeValue(" ", 5997, "start-0", 5998, 8, true); 73 WriteAttributeValue("", 6005, imageFilter, 6005, 14, false); 74 EndWriteAttribute(); 75 WriteLiteral(">\n\t\t\t"); 76 Write(RenderPartial("Components/Image.cshtml", item.GetFile("Image") ?? new Dynamicweb.Frontend.FileViewModel(), parms)); 77 WriteLiteral("\n\t\t</div>\n\t}\n}\n\n"); 78 Write(helper); 79 WriteLiteral(" RenderTitle(ItemViewModel item, string titleFontSize, string maxWidth)\n{\n\tif (!string.IsNullOrEmpty(item.GetString(\"Title\")) && !item.GetBoolean(\"HideTitle\"))\n\t{\n\t\t<h2"); 80 BeginWriteAttribute("class", " class=\"", 6330, "\"", 6356, 2); 81 WriteAttributeValue("", 6338, titleFontSize, 6338, 14, false); 82 WriteAttributeValue(" ", 6352, "m-0", 6353, 4, true); 83 EndWriteAttribute(); 84 WriteLiteral(">\n\t\t\t<span"); 85 BeginWriteAttribute("class", " class=\"", 6367, "\"", 6384, 1); 86 WriteAttributeValue("", 6375, maxWidth, 6375, 9, false); 87 EndWriteAttribute(); 88 WriteLiteral(">"); 89 Write(item.GetString("Title")); 90 WriteLiteral("</span>\n\t\t</h2>\n\t}\n}\n\n"); 91 Write(helper); 92 WriteLiteral(" RenderText(ItemViewModel item, string subtitleFontSize, string maxWidth)\n{\n\tif (!string.IsNullOrEmpty(item.GetString(\"Text\")))\n\t{\n\t\t<p"); 93 BeginWriteAttribute("class", " class=\"", 6574, "\"", 6608, 3); 94 WriteAttributeValue("", 6582, subtitleFontSize, 6582, 17, false); 95 WriteAttributeValue(" ", 6599, "lead", 6600, 5, true); 96 WriteAttributeValue(" ", 6604, "m-0", 6605, 4, true); 97 EndWriteAttribute(); 98 WriteLiteral(">\n\t\t\t<span"); 99 BeginWriteAttribute("class", " class=\"", 6619, "\"", 6636, 1); 100 WriteAttributeValue("", 6627, maxWidth, 6627, 9, false); 101 EndWriteAttribute(); 102 WriteLiteral(">"); 103 Write(item.GetString("Text")); 104 WriteLiteral("</span>\n\t\t</p>\n\t}\n}\n\n"); 105 Write(helper); 106 WriteLiteral(@" RenderButton(ItemViewModel item, string buttonSize) { string linkType = item.GetRawValueString(""LinkType"", ""page""); Dynamicweb.Frontend.LinkViewModel link = new Dynamicweb.Frontend.LinkViewModel(); string StretchedLink = item.GetRawValueString(""StretchedLink"", """"); StretchedLink = StretchedLink == ""item-not-clickable"" ? """" : StretchedLink; StretchedLink = StretchedLink == ""item-clickable"" ? "" stretched-link"" : StretchedLink; if (linkType == ""page"" && item.GetLink(""ButtonLink"") != null) { link = item.GetLink(""ButtonLink""); } if (linkType == ""product-group"") { IList<ProductGroupViewModel> selectedGroups = item.GetValue<IList<ProductGroupViewModel>>(""ProductGroupLink""); IList<string> groupIds = new List<string> { }; if (selectedGroups != null) { foreach (var fromGroup in selectedGroups) { groupIds.Add(fromGroup.Id); } } link = new Dynamicweb.Frontend.LinkViewModel() { Url = ""/Default.aspx?ID="" + GetPageIdByNavigationTag(""Shop"") + ""&GroupID="" + string.Join("","", grou"); 107 WriteLiteral(@"pIds).Trim(), IsExternal = false }; } if (linkType == ""product"") { ProductListViewModel products = item.GetValue<ProductListViewModel>(""ProductLink""); IList<string> productIds = new List<string> { }; if (products != null) { foreach (var product in products.Products) { productIds.Add(product.Id); } } string productParameter = productIds.Count == 1 ? ""ProductID"" : ""MainProductId""; string pageTag = productIds.Count == 1 ? ""ProductDetailPage"" : ""Shop""; link = new Dynamicweb.Frontend.LinkViewModel() { Url = ""/Default.aspx?ID="" + GetPageIdByNavigationTag(pageTag) + ""&"" + productParameter + ""="" + string.Join("","", productIds).Trim(), IsExternal = false }; } if (link != null && !string.IsNullOrEmpty(item.GetString(""ButtonLabel""))) { string target = Pageview.AreaSettings.GetBoolean(""OpenLinksInNewTab"") && link.IsExternal ? ""target=\""_blank\"""" : """"; string rel = Pageview.AreaSettings.GetBoolean(""OpenLinksInNewTab"") && link.IsExternal ? ""rel=\""noopener\"""" : """"; "); 108 WriteLiteral(@" string buttonStyle = item.GetRawValueString(""ButtonStyle"", ""primary""); buttonStyle = buttonStyle == ""primary"" ? ""btn-primary"" : buttonStyle; buttonStyle = buttonStyle == ""secondary"" ? ""btn-secondary"" : buttonStyle; buttonStyle = buttonStyle == ""link"" ? ""btn-link"" : buttonStyle; <div class=""m-0""> <a"); 109 BeginWriteAttribute("href", " href=\"", 9049, "\"", 9065, 1); 110 WriteAttributeValue("", 9056, link.Url, 9056, 9, false); 111 EndWriteAttribute(); 112 BeginWriteAttribute("class", " class=\"", 9066, "\"", 9119, 4); 113 WriteAttributeValue("", 9074, "btn", 9074, 3, true); 114 WriteAttributeValue(" ", 9077, buttonStyle, 9078, 12, false); 115 WriteAttributeValue("", 9090, buttonSize, 9090, 13, false); 116 WriteAttributeValue("", 9103, StretchedLink, 9103, 16, false); 117 EndWriteAttribute(); 118 WriteLiteral(" "); 119 Write(target); 120 WriteLiteral(" "); 121 Write(rel); 122 WriteLiteral(">"); 123 Write(item.GetString("ButtonLabel")); 124 WriteLiteral(@"</a> </div> } else if (link != null && !string.IsNullOrEmpty(link.Url)) { string target = Pageview.AreaSettings.GetBoolean(""OpenLinksInNewTab"") && link.IsExternal ? ""target=\""_blank\"""" : """"; string rel = Pageview.AreaSettings.GetBoolean(""OpenLinksInNewTab"") && link.IsExternal ? ""rel=\""noopener\"""" : """"; <a"); 125 BeginWriteAttribute("href", " href=\"", 9482, "\"", 9498, 1); 126 WriteAttributeValue("", 9489, link.Url, 9489, 9, false); 127 EndWriteAttribute(); 128 WriteLiteral(" "); 129 Write(target); 130 WriteLiteral(" "); 131 Write(rel); 132 WriteLiteral(" class=\""); 133 Write(StretchedLink); 134 WriteLiteral("\">\n\t\t\t<span class=\"visually-hidden\">"); 135 Write(Model.Item.GetString("Title")); 136 WriteLiteral(@"</span> </a> } } <script type=""module"" src=""~/Files/Templates/Designs/Swift/Assets/js/tiny-slider.js""></script> <script type=""module""> swift.AssetLoader.Load('Files/Templates/Designs/Swift/Assets/css/tiny-slider.css', 'css'); document.addEventListener('load.swift.assetloader', function () { var slider = tns({ container: ""#carousel_"); 137 Write(uniqueId); 138 WriteLiteral("\",\n\t\t\tcontrols: false,\n\t\t\tnav: false,\n\t\t\tautoplay: "); 139 Write(enableAutoplay); 140 WriteLiteral(",\n\t\t\tautoplayTimeout: "); 141 Write(interval); 142 WriteLiteral(",\n\t\t\tautoplayHoverPause: true,\n\t\t\tautoplayButtonOutput: false,\n\t\t\titems: 1,\n\t\t\tloop: "); 143 Write(enableAutoplay); 144 WriteLiteral(",\n\t\t\tmode: \""); 145 Write(animation); 146 WriteLiteral("\",\n\t\t\trewind: false,\n\t\t\tarrowKeys: false,\n\t\t\tlazyload: true,\n\t\t\tswipeAngle: 30,\n\t\t\tmouseDrag: true,\n\t\t\tpreventScrollOnTouch: \'auto\',\n\t\t\tresponsive: {\n\t\t\t\t992: {\n\t\t\t\t\tcontrols: "); 147 Write(enableControls); 148 WriteLiteral(@", mouseDrag: false, controlsText: [ '<span class=""tns-controls-icon"" style=""height:3em; width: 3em;""><span class=""visually-hidden"">Previous</span><span class=""icon-3""><svg viewBox=""0 0 16 16"" class=""bi bi-arrow-left"" fill=""currentColor"" xmlns=""http://www.w3.org/2000/svg""><path fill-rule=""evenodd"" d=""M15 8a.5.5 0 0 0-.5-.5H2.707l3.147-3.146a.5.5 0 1 0-.708-.708l-4 4a.5.5 0 0 0 0 .708l4 4a.5.5 0 0 0 .708-.708L2.707 8.5H14.5A.5.5 0 0 0 15 8z""/></svg></span></span>', '<span class=""tns-controls-icon"" style=""height:3em; width: 3em;""><span class=""visually-hidden"">Next</span><span class=""icon-3""><svg viewBox=""0 0 16 16"" class=""bi bi-arrow-right"" fill=""currentColor"" xmlns=""http://www.w3.org/2000/svg""><path fill-rule=""evenodd"" d=""M1 8a.5.5 0 0 1 .5-.5h11.793l-3.147-3.146a.5.5 0 0 1 .708-.708l4 4a.5.5 0 0 1 0 .708l-4 4a.5.5 0 0 1-.708-.708L13.293 8.5H1.5A.5.5 0 0 1 1 8z""/></svg></span></span>' ], } } }); }); </script> "); 149 if (movePageBehind && isFirstPoster) { WriteLiteral("\t<script>\n\t\t[\'resize\', \'load\'].forEach(function (e) {\n\t\t\twindow.addEventListener(e, () => swift.Scroll.setContentPosition());\n\t\t});\n\t</script>\n"); 150 } } 151 #pragma warning restore 1998 152 } 153 } 154 #pragma warning restore 1591 155

1 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> @using Dynamicweb.Ecommerce.ProductCatalog @using System.Web @using Dynamicweb.Frontend @{ bool movePageBehind = false; bool isFirstPoster = false; string movePageBehindClass = ""; if (Pageview.Page.PropertyItem != null) { string headerCssClass = Pageview.Page.PropertyItem["MoveThisPageBehindTheHeader"] != null ? Pageview.Page.PropertyItem["MoveThisPageBehindTheHeader"].ToString() : "sticky-top"; movePageBehind = headerCssClass == "fixed-top" && !Pageview.IsVisualEditorMode ? true : false; if (movePageBehind) { movePageBehindClass = " poster-behind"; if (!Dynamicweb.Context.Current.Items.Contains("firstPosterIsRendered")) { isFirstPoster = true; Dynamicweb.Context.Current.Items.Add("firstPosterIsRendered", true); } } } var uniqueId = Pageview.CurrentParagraph.ID.ToString(); string title = Model.Item.GetString("Title"); var carouselItems = Model.Item?.GetItems("Carousel_Items") ?? Enumerable.Empty<Dynamicweb.Frontend.ItemViewModel>().ToList(); string enableControls = Model.Item.GetBoolean("EnableControls").ToString().ToLower(); string enableIndcators = Model.Item.GetBoolean("EnableIndicators").ToString().ToLower(); bool autoplay = Model.Item.GetBoolean("Autoplay"); string interval = (autoplay) ? Model.Item.GetString("Interval", "5000") : "0"; string enableAutoplay = autoplay.ToString().ToLower(); string animation = Model.Item.GetRawValueString("Animation", "carousel"); string carouselHeight = Model.Item.GetRawValueString("CarouselHeight", "h-100 min-vh-75 min-vh-md-100"); carouselHeight = carouselHeight == "small" ? "min-vh-25 min-vh-md-50" : carouselHeight; carouselHeight = carouselHeight == "medium" ? "min-vh-50 min-vh-md-75" : carouselHeight; carouselHeight = carouselHeight == "large" ? "min-vh-75 min-vh-md-100" : carouselHeight; string buttonSize = Model.Item.GetRawValueString("buttonSize", "regular"); buttonSize = buttonSize == "small" ? " btn-sm" : buttonSize; buttonSize = buttonSize == "regular" ? "" : buttonSize; buttonSize = buttonSize == "large" ? " btn-lg" : buttonSize; string carouselPadding = Model.Item.GetRawValueString("ContentPadding", ""); carouselPadding = carouselPadding == "none" ? "p-3 px-xl-3 py-xl-4" : carouselPadding; carouselPadding = carouselPadding == "small" ? "p-3 p-xl-4" : carouselPadding; carouselPadding = carouselPadding == "large" ? "p-4 p-xl-5" : carouselPadding; string titleFontSize = Model.Item.GetRawValueString("TitleFontSize", "display-1"); string subtitleFontSize = Model.Item.GetRawValueString("SubtitleFontSize", "fs-5"); } <div id="carousel_@uniqueId" class="js-slider item_@Model.Item.SystemName.ToLower()"> @{ bool isFirst = true; } @foreach (var item in carouselItems) { @RenderItem(item, isFirst, carouselHeight, carouselPadding, buttonSize, titleFontSize, subtitleFontSize, movePageBehindClass) isFirst = false; } </div> @helper RenderItem(ItemViewModel item, bool isFirst, string carouselHeight, string carouselPadding, string buttonSize, string titleFontSize, string subtitleFontSize, string movePageBehindClass) { string layout = item.GetRawValueString("Layout", "align-middle-center-text-center"); string carouselWidth = "container-xl"; int xPos = item?.GetFile("Image")?.FocalPositionFromLeft ?? 50; int yPos = item?.GetFile("Image")?.FocalPositionFromTop ?? 50; string theme = !string.IsNullOrWhiteSpace(item.GetRawValueString("Theme")) ? " theme " + item.GetRawValueString("Theme").Replace(" ", "").Trim().ToLower() : ""; string active = isFirst ? "active" : ""; string alignment = ""; string maxWidth = item.GetRawValueString("TextReadability", "max-width-on"); maxWidth = maxWidth == "max-width-on" ? "mw-75ch d-inline-block" : maxWidth; maxWidth = maxWidth == "max-width-off" ? "" : maxWidth; <div class="@(active)"> <div class="position-relative h-100@(theme)@(movePageBehindClass)"> @RenderImage(item) @switch (layout) { case "align-top-left-text-left": alignment = "text-start justify-content-start align-items-start"; break; case "align-top-center-text-center": alignment = "text-center justify-content-start align-items-start"; break; case "align-top-right-text-right": alignment = "text-end justify-content-start align-items-start"; break; case "align-middle-left-text-left": alignment = "text-start justify-content-center align-items-center"; break; case "align-middle-center-text-center": alignment = "text-center justify-content-center align-items-center"; break; case "align-middle-right-text-right": alignment = "text-end justify-content-center align-items-center"; break; case "align-bottom-left-text-left": alignment = "text-start justify-content-end align-items-end"; break; case "align-bottom-center-text-center": alignment = "text-center justify-content-end align-items-end"; break; case "align-bottom-right-text-right": alignment = "text-end justify-content-end align-items-end"; break; } <div class="position-relative h-100"> <div class="h-100 grid grid-1 @(carouselWidth) @carouselPadding @(alignment) @(carouselHeight)"> <div class="grid grid-1 gap-3 gap-md-4"> @RenderTitle(item, titleFontSize, maxWidth) @RenderText(item, subtitleFontSize, maxWidth) @RenderButton(item, buttonSize) </div> </div> </div> </div> </div> } @helper RenderImage(ItemViewModel item) { if (!string.IsNullOrEmpty(item.GetString("Image"))) { var parms = new Dictionary<string, object>(); parms.Add("cssClass", "h-100 w-100"); parms.Add("columns", Model.GridRowColumnCount); string imageFilter = item.GetRawValueString("ImageFilter", ""); imageFilter = imageFilter == "no-filter" ? "" : imageFilter; imageFilter = imageFilter == "filter" ? " image-filter" : imageFilter; <div class="position-absolute top-0 bottom-0 end-0 start-0@(imageFilter)"> @RenderPartial("Components/Image.cshtml", item.GetFile("Image") ?? new Dynamicweb.Frontend.FileViewModel(), parms) </div> } } @helper RenderTitle(ItemViewModel item, string titleFontSize, string maxWidth) { if (!string.IsNullOrEmpty(item.GetString("Title")) && !item.GetBoolean("HideTitle")) { <h2 class="@titleFontSize m-0"> <span class="@maxWidth">@item.GetString("Title")</span> </h2> } } @helper RenderText(ItemViewModel item, string subtitleFontSize, string maxWidth) { if (!string.IsNullOrEmpty(item.GetString("Text"))) { <p class="@subtitleFontSize lead m-0"> <span class="@maxWidth">@item.GetString("Text")</span> </p> } } @helper RenderButton(ItemViewModel item, string buttonSize) { string linkType = item.GetRawValueString("LinkType", "page"); Dynamicweb.Frontend.LinkViewModel link = new Dynamicweb.Frontend.LinkViewModel(); string StretchedLink = item.GetRawValueString("StretchedLink", ""); StretchedLink = StretchedLink == "item-not-clickable" ? "" : StretchedLink; StretchedLink = StretchedLink == "item-clickable" ? " stretched-link" : StretchedLink; if (linkType == "page" && item.GetLink("ButtonLink") != null) { link = item.GetLink("ButtonLink"); } if (linkType == "product-group") { IList<ProductGroupViewModel> selectedGroups = item.GetValue<IList<ProductGroupViewModel>>("ProductGroupLink"); IList<string> groupIds = new List<string> { }; if (selectedGroups != null) { foreach (var fromGroup in selectedGroups) { groupIds.Add(fromGroup.Id); } } link = new Dynamicweb.Frontend.LinkViewModel() { Url = "/Default.aspx?ID=" + GetPageIdByNavigationTag("Shop") + "&GroupID=" + string.Join(",", groupIds).Trim(), IsExternal = false }; } if (linkType == "product") { ProductListViewModel products = item.GetValue<ProductListViewModel>("ProductLink"); IList<string> productIds = new List<string> { }; if (products != null) { foreach (var product in products.Products) { productIds.Add(product.Id); } } string productParameter = productIds.Count == 1 ? "ProductID" : "MainProductId"; string pageTag = productIds.Count == 1 ? "ProductDetailPage" : "Shop"; link = new Dynamicweb.Frontend.LinkViewModel() { Url = "/Default.aspx?ID=" + GetPageIdByNavigationTag(pageTag) + "&" + productParameter + "=" + string.Join(",", productIds).Trim(), IsExternal = false }; } if (link != null && !string.IsNullOrEmpty(item.GetString("ButtonLabel"))) { string target = Pageview.AreaSettings.GetBoolean("OpenLinksInNewTab") && link.IsExternal ? "target=\"_blank\"" : ""; string rel = Pageview.AreaSettings.GetBoolean("OpenLinksInNewTab") && link.IsExternal ? "rel=\"noopener\"" : ""; string buttonStyle = item.GetRawValueString("ButtonStyle", "primary"); buttonStyle = buttonStyle == "primary" ? "btn-primary" : buttonStyle; buttonStyle = buttonStyle == "secondary" ? "btn-secondary" : buttonStyle; buttonStyle = buttonStyle == "link" ? "btn-link" : buttonStyle; <div class="m-0"> <a href="@link.Url" class="btn @buttonStyle@(buttonSize)@(StretchedLink)" @target @rel>@item.GetString("ButtonLabel")</a> </div> } else if (link != null && !string.IsNullOrEmpty(link.Url)) { string target = Pageview.AreaSettings.GetBoolean("OpenLinksInNewTab") && link.IsExternal ? "target=\"_blank\"" : ""; string rel = Pageview.AreaSettings.GetBoolean("OpenLinksInNewTab") && link.IsExternal ? "rel=\"noopener\"" : ""; <a href="@link.Url" @target @rel class="@StretchedLink"> <span class="visually-hidden">@Model.Item.GetString("Title")</span> </a> } } <script type="module" src="~/Files/Templates/Designs/Swift/Assets/js/tiny-slider.js"></script> <script type="module"> swift.AssetLoader.Load('Files/Templates/Designs/Swift/Assets/css/tiny-slider.css', 'css'); document.addEventListener('load.swift.assetloader', function () { var slider = tns({ container: "#carousel_@uniqueId", controls: false, nav: false, autoplay: @enableAutoplay, autoplayTimeout: @interval, autoplayHoverPause: true, autoplayButtonOutput: false, items: 1, loop: @enableAutoplay, mode: "@animation", rewind: false, arrowKeys: false, lazyload: true, swipeAngle: 30, mouseDrag: true, preventScrollOnTouch: 'auto', responsive: { 992: { controls: @enableControls, mouseDrag: false, controlsText: [ '<span class="tns-controls-icon" style="height:3em; width: 3em;"><span class="visually-hidden">Previous</span><span class="icon-3"><svg viewBox="0 0 16 16" class="bi bi-arrow-left" fill="currentColor" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M15 8a.5.5 0 0 0-.5-.5H2.707l3.147-3.146a.5.5 0 1 0-.708-.708l-4 4a.5.5 0 0 0 0 .708l4 4a.5.5 0 0 0 .708-.708L2.707 8.5H14.5A.5.5 0 0 0 15 8z"/></svg></span></span>', '<span class="tns-controls-icon" style="height:3em; width: 3em;"><span class="visually-hidden">Next</span><span class="icon-3"><svg viewBox="0 0 16 16" class="bi bi-arrow-right" fill="currentColor" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M1 8a.5.5 0 0 1 .5-.5h11.793l-3.147-3.146a.5.5 0 0 1 .708-.708l4 4a.5.5 0 0 1 0 .708l-4 4a.5.5 0 0 1-.708-.708L13.293 8.5H1.5A.5.5 0 0 1 1 8z"/></svg></span></span>' ], } } }); }); </script> @if (movePageBehind && isFirstPoster) { <script> ['resize', 'load'].forEach(function (e) { window.addEventListener(e, () => swift.Scroll.setContentPosition()); }); </script> }

Nulla posuere

Ut vitae luctus

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec tempor facilisis enim, in tincidunt felis bibendum a. Etiam ligula sem, hendrerit vitae dolor in, pretium suscipit nibh. Nullam malesuada, magna a volutpat porta, augue arcu consequat tortor, ac varius augue nulla in ante. Nulla posuere neque tellus, et tempus nunc pulvinar ut. Ut vitae luctus erat. Vestibulum mattis elit sapien, euismod elementum sem semper ac.

visa-dark Created with Sketch.

Text and image (svg logo)

Lorem ipsum dolor sit amet

Suspendisse mattis, sapien pulvinar sodales dictum, felis lacus lacinia nisi, ac pharetra ligula felis eu lacus. Integer fermentum porttitor odio, eget sagittis augue. Phasellus ut ligula odio. Nulla cursus mauris ut nulla bibendum imperdiet sit amet sed ligula. Nunc in ultrices ex. Nam ornare rutrum felis id sagittis. 

Who we are and what we do

SWIFT works with local bicycle shops. As the shop is also a SWIFT dealer, you are guaranteed a qualitative service. You can call into him to physically check out our range before you buy. More importantly, you’ll have a better idea of what you’re buying online than if you had nothing but a photograph to go on.

Won over by the idea of a SWIFT bike? Then it’s merely up to you whether you buy it from your local bicycle shop or online from SWIFT.

‘SWIFT bikes’, the brainchild of two passionate entrepreneurs, Pascal and Christophe, is a new brand of e-bikes. With a combined experience of more than 40 years’ in the world of cycling under their belt, they decided to join forces to set a new trend in the bicycle industry. Are you up for it?

And of course, a new brand needs a new name. A name that reflects what we stand for. We believe that your bike should also really be your bike, one that’s exactly as you want it. That’s what SWIFT means. In English that is, and spelt slightly differently. But 100 % yours! 

The bicycle industry is one of those sectors where little or nothing has changed for decades. The manufacturer produces the bikes, the distributor distributes them across the various countries, the bike shop is the regional outlet and the consumer ultimately ends up using the bike. 

There are better ways. Especially in 2021, where digitalisation is nothing new anymore. And yet, the bicycle industry seems happy to stay back of the pack. The online sale of bikes hasn’t quite caught on yet. On the one hand, because manufacturers want to keep their sales outlets in business and on the other hand because those very sales outlets simply don’t have the time to focus on online sales. Precisely on that account, buying your bike online can prove to be more hassle than it’s worth. We believe that buying your bike online should be child’s play rather than an undertaking.

Our structure is cost-efficient at a number of levels. For starters, we don’t carry ten different models in various colours and finishes and we operate an efficient stock system, which cuts down on logistics and storage costs. That structure translates into keen prices, much to the benefit of consumers!

Once you start feeling comfortable with your riding skills, you might want to upgrade for Clipless shoes and pedals. These connect your shoe to the pedal, for a no-brainer and surefooted pedalling action.

Let's start with pedals. You have 2 types of pedals out there:

  • Mountain bike pedals and road bike pedals. MTB pedals are easier to clip in and out, offer more float and you can choose between mountain bike shoes, commuting shoes or even road bike shoes.
  • Road bike pedals, are a bit lighter, only have one side you can clip on, so generally take more focus and fiddling to clip in. Also, only road shoes work with road pedals. The good thing about the road pedals is the much wider contact area between shoe and pedal, offering more stability. This is evident when you stand up for a sprint.

Shoes:

  • Mountain bike shoes are heavier but more comfortable. The sole also helps in walking out of the bike, offering grip and foot ergonomics similar to normal shoes.
  •  Commuter shoes are perhaps more comfortable than mountain bike shoes and feature a flatter sole, not as grippy in mud conditions as a mountain bike shoe would be. Some offer laces or even elastic laces to secure the shoe to the foot.
  • Road shoes are a bit more bare inside to save weight. Many riders (me inclusive) invest in customizable inner soles to offer more foot arch support and overall comfort. These shoes are generally super stiff and enhance pedalling performance significantly when compared to mountain bike and commuter shoes.

When you spend more on pedals, they get lighter. All other features remain somewhat the same.

When you spend more on shoes, they might get lighter but usually is more about sole stiffness (pedalling power) and other features like dials and buckles to secure the foot.

By clicking 'Accept All' you consent that we may collect information about you for various purposes, including: Statistics and Marketing