|
36 | 36 |
|
37 | 37 | <!-- Cards --> |
38 | 38 | <div class="container pb-5"> |
39 | | - <div class="row gy-3 gy-sm-5 gx-sm-5" id="features-container" hx-get="/home/loadFeatures" hx-trigger="load" |
40 | | - hx-target="#features-container" hx-swap="innerHTML"> |
41 | | - <!-- Features will be loaded here via HTMX --> |
| 39 | + <div class="row gy-3 gy-sm-5 gx-sm-5" id="features-container"> |
| 40 | + <cfoutput query="features"> |
| 41 | + <div class="col-lg-4"> |
| 42 | + <div class="px-4 py-4 bg-white border-transparent border-2 cards rounded-5 cursor-pointer shadow-sm"> |
| 43 | + <div class="icon-container d-flex justify-content-center align-items-center"> |
| 44 | + #features.image# |
| 45 | + </div> |
| 46 | + <div class="mt-3"> |
| 47 | + <p class="fw-bold fs-24 text--secondary">#features.title#</p> |
| 48 | + <p class="fs-18 text--secondary/70 pt-1 line-clamp-2">#features.description#</p> |
| 49 | + </div> |
| 50 | + </div> |
| 51 | + </div> |
| 52 | + </cfoutput> |
42 | 53 | </div> |
43 | 54 | </div> |
44 | 55 |
|
45 | 56 | <!-- Latest blogs --> |
46 | 57 | <div class="pt-5 px-2 blog-main"> |
47 | | - <h1 class="text-center fw-bold fs-60">Latest Blog Posts</h1> |
| 58 | + <h1 class="text-center fw-bold fs-60">Latest From the Wheels Dev Blog</h1> |
48 | 59 | <div class="swiper py-5 blogSwiper h-max"> |
49 | | - <div class="swiper-wrapper" id="blogs-container" hx-get="/home/loadBlogs" hx-trigger="load" |
50 | | - hx-target="#blogs-container" hx-swap="innerHTML"> |
51 | | - <!-- Blogs will be loaded here via HTMX --> |
| 60 | + <div class="swiper-wrapper" id="blogs-container"> |
| 61 | + <cfoutput query= "blogs"> |
| 62 | + <div class="p-4 bg-white rounded-5 shadow-sm swiper-slide"> |
| 63 | + <a href="/blog/#slug#" class=""> |
| 64 | + <div> |
| 65 | + <p class="fs-18 mb-3 text--secondary/70 fw-bold line-clamp-1">#blogs.title#</p> |
| 66 | + </div> |
| 67 | + |
| 68 | + <div class="d-flex gap-2 justify-content-between align-items-center"> |
| 69 | + <p class="fs-16 truncate fw-medium text--lightGray">#dateformat(blogs.postDate, 'MMMM DD, YYYY')# by #blogs.fullName#</p> |
| 70 | + <button class="bg--primary text-nowrap fs-16 text-white rounded-2 px-3 py-1">Learn more</button> |
| 71 | + </div> |
| 72 | + </a> |
| 73 | + </div> |
| 74 | + </cfoutput> |
52 | 75 | </div> |
53 | 76 | </div> |
54 | 77 | </div> |
55 | 78 |
|
56 | | - <!-- our guide --> |
57 | | - <div class="gudie-main py-5 d-none"> |
58 | | - <h1 class="text-center text-white fs-60 fw-bold">Our Guide</h1> |
59 | | - <div class="container mt-5" id="guides-container" hx-get="/home/loadGuides" hx-trigger="load" |
60 | | - hx-target="#guides-container" hx-swap="innerHTML"> |
61 | | - <!-- Guides will be loaded here via HTMX --> |
62 | | - </div> |
63 | | - </div> |
64 | | - |
65 | 79 | <!-- welcome community --> |
| 80 | + <cfoutput> |
66 | 81 | <div class="container py-5 mt-5"> |
67 | 82 | <div class="row align-items-center gy-5"> |
68 | 83 | <div class="col-lg-12 space-y-3 text-center col-12"> |
|
71 | 86 | Welcome to Our Community - a place where like-minded people connect, share ideas, <br> and grow |
72 | 87 | together in a positive and supportive environment. |
73 | 88 | </p> |
74 | | - <a href="/community" class="bg--primary d-block w-max mx-auto fs-16 px-3 py-2 rounded-18 text-white"> |
| 89 | + <a href="#urlFor(route='community')#" class="bg--primary d-block w-max mx-auto fs-16 px-3 py-2 rounded-18 text-white"> |
75 | 90 | <span>Explore community</span> |
76 | 91 | </a> |
77 | 92 | </div> |
78 | 93 | <div class="text-center col-12"> |
79 | | - <img src="/images/community.png" class="img-fluid" alt="Community"> |
| 94 | + #imageTag(source="community.png", class="img-fluid", alt="Wheels.dev Community")# |
80 | 95 | </div> |
81 | 96 | </div> |
82 | 97 | </div> |
| 98 | + </cfoutput> |
83 | 99 |
|
84 | 100 | <!-- Testimonials --> |
85 | 101 | <cfoutput> |
|
99 | 115 | <cfloop query="testimonials"> |
100 | 116 | <div class="d-flex row swiper-slide"> |
101 | 117 | <div class="col-lg-3 col-12 pb-2 pb-sm-0"> |
102 | | - <img src="#len(testimonials.logoPath) gt 0 ? testimonials.logoPath : '/images/testi.png'#" class="img-fluid" alt="#encodeForHtml(testimonials.companyName)#" style="width: 330px; height: 290px;"> |
| 118 | + <cfset imgSrc = testimonials.logoPath> |
| 119 | + <cfif !len(trim(imgSrc))> |
| 120 | + <cfset imgSrc = "testi.png"> |
| 121 | + </cfif> |
| 122 | + #imageTag(source=imgSrc, class="img-fluid", alt=encodeForHtml(testimonials.companyName), style="width: 330px; height: 290px;")# |
103 | 123 | </div> |
104 | 124 | <div class="col-lg-9 col-12"> |
105 | 125 | <div class="d-flex flex-column justify-content-between h-100"> |
|
108 | 128 | #encodeForHtml(testimonials.testimonialText)# |
109 | 129 | </p> |
110 | 130 | <p class="fs-18 text--secondary fw-medium border-top pt-4"> |
111 | | - <cfif structKeyExists(variables, "user_fullName") AND len(trim(user_fullName))> |
112 | | - #encodeForHtml(user_fullName)# |
113 | | - <cfelseif len(trim(testimonials.companyName))> |
| 131 | + <cfif structKeyExists(testimonials, "authorName") AND len(trim(testimonials.authorName))> |
| 132 | + #encodeForHtml(testimonials.authorName)# |
| 133 | + <cfelseif structKeyExists(testimonials, "companyName") AND len(trim(testimonials.companyName))> |
114 | 134 | #encodeForHtml(testimonials.companyName)# |
115 | 135 | <cfelse> |
116 | 136 | Anonymous |
|
149 | 169 | </div> |
150 | 170 | <div class="d-flex flex-wrap justify-content-center mt-5 gap-3"> |
151 | 171 | <a href="https://github.com/wheels-dev/wheels/graphs/contributors" target="_blank"> |
152 | | - <img src="https://contrib.rocks/image?repo=wheels-dev/wheels" style="max-width: 100%;"> |
| 172 | + <img src="https://contrib.rocks/image?repo=wheels-dev/wheels" style="max-width: 100%;" alt="GitHub Contributors for CFWheels"> |
153 | 173 | </a> |
154 | 174 | </div> |
155 | 175 | </div> |
|
0 commit comments