@jxsuite/starters 3.4.0 → 3.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (500) hide show
  1. package/package.json +5 -5
  2. package/sites/blog/components/bl-author-bio.jxn +64 -0
  3. package/sites/blog/components/bl-contact-form.jxn +77 -0
  4. package/sites/blog/components/bl-contact-info.jxn +32 -0
  5. package/sites/blog/components/bl-cta.jxn +52 -0
  6. package/sites/blog/components/bl-footer.jxn +85 -0
  7. package/sites/blog/components/bl-masthead.jxn +111 -0
  8. package/sites/blog/components/bl-nav.jxn +62 -0
  9. package/sites/blog/components/bl-newsletter-cta.jxn +104 -0
  10. package/sites/blog/components/bl-post-card.jxn +106 -0
  11. package/sites/blog/components/bl-post-list.jxn +11 -0
  12. package/sites/blog/components/bl-prose.jxn +67 -0
  13. package/sites/blog/components/bl-section-header.jxn +52 -0
  14. package/sites/blog/components/bl-tag-pill.jxn +19 -0
  15. package/sites/blog/document.schema.json +26 -2
  16. package/sites/blog/layouts/base.jxn +17 -0
  17. package/sites/blog/layouts/post.jxn +13 -0
  18. package/sites/blog/package.json +3 -3
  19. package/sites/blog/pages/[slug].jxn +107 -0
  20. package/sites/blog/project.jxn +1 -1
  21. package/sites/course/components/co-application.jxn +106 -0
  22. package/sites/course/components/co-cohort.jxn +132 -0
  23. package/sites/course/components/co-cta.jxn +95 -0
  24. package/sites/course/components/co-curriculum-accordion.jxn +917 -0
  25. package/sites/course/components/co-faq.jxn +348 -0
  26. package/sites/course/components/co-footer.jxn +138 -0
  27. package/sites/course/components/co-hero.jxn +354 -0
  28. package/sites/course/components/co-instructor-card.jxn +128 -0
  29. package/sites/course/components/co-mentor.jxn +51 -0
  30. package/sites/course/components/co-module-card.jxn +101 -0
  31. package/sites/course/components/co-nav.jxn +172 -0
  32. package/sites/course/components/co-outcome-card.jxn +57 -0
  33. package/sites/course/components/co-outcomes.jxn +179 -0
  34. package/sites/course/components/co-pricing.jxn +145 -0
  35. package/sites/course/components/co-section-header.jxn +55 -0
  36. package/sites/course/components/co-testimonial-card.jxn +69 -0
  37. package/sites/course/document.schema.json +26 -2
  38. package/sites/course/layouts/base.jxn +17 -0
  39. package/sites/course/package.json +3 -3
  40. package/sites/course/project.jxn +1 -1
  41. package/sites/event/components/ev-agenda-tabs.jxn +663 -0
  42. package/sites/event/components/ev-cta.jxn +93 -0
  43. package/sites/event/components/ev-feature.jxn +46 -0
  44. package/sites/event/components/ev-footer.jxn +135 -0
  45. package/sites/event/components/ev-hero.jxn +323 -0
  46. package/sites/event/components/ev-nav.jxn +142 -0
  47. package/sites/event/components/ev-reason.jxn +50 -0
  48. package/sites/event/components/ev-savedate.jxn +268 -0
  49. package/sites/event/components/ev-section-header.jxn +51 -0
  50. package/sites/event/components/ev-session-row.jxn +103 -0
  51. package/sites/event/components/ev-speaker-card.jxn +104 -0
  52. package/sites/event/components/ev-sponsors.jxn +110 -0
  53. package/sites/event/components/ev-stat.jxn +39 -0
  54. package/sites/event/components/ev-ticket-card.jxn +169 -0
  55. package/sites/event/components/ev-venue.jxn +61 -0
  56. package/sites/event/document.schema.json +26 -2
  57. package/sites/event/layouts/base.jxn +12 -0
  58. package/sites/event/package.json +3 -3
  59. package/sites/event/project.jxn +1 -1
  60. package/sites/fitness-studio/components/fs-band.jxn +119 -0
  61. package/sites/fitness-studio/components/fs-booking.jxn +92 -0
  62. package/sites/fitness-studio/components/fs-class-card.jxn +103 -0
  63. package/sites/fitness-studio/components/fs-class-grid.jxn +23 -0
  64. package/sites/fitness-studio/components/fs-cta.jxn +81 -0
  65. package/sites/fitness-studio/components/fs-feature.jxn +40 -0
  66. package/sites/fitness-studio/components/fs-footer.jxn +116 -0
  67. package/sites/fitness-studio/components/fs-hero.jxn +290 -0
  68. package/sites/fitness-studio/components/fs-hours.jxn +78 -0
  69. package/sites/fitness-studio/components/fs-instructor-card.jxn +104 -0
  70. package/sites/fitness-studio/components/fs-intro.jxn +231 -0
  71. package/sites/fitness-studio/components/fs-modality.jxn +133 -0
  72. package/sites/fitness-studio/components/fs-nav.jxn +95 -0
  73. package/sites/fitness-studio/components/fs-pricing-card.jxn +190 -0
  74. package/sites/fitness-studio/components/fs-pricing-table.jxn +322 -0
  75. package/sites/fitness-studio/components/fs-review.jxn +59 -0
  76. package/sites/fitness-studio/components/fs-schedule.jxn +714 -0
  77. package/sites/fitness-studio/components/fs-section-header.jxn +55 -0
  78. package/sites/fitness-studio/document.schema.json +26 -2
  79. package/sites/fitness-studio/layouts/base.jxn +17 -0
  80. package/sites/fitness-studio/package.json +3 -3
  81. package/sites/fitness-studio/project.jxn +1 -1
  82. package/sites/home-services/components/hs-callbar.jxn +60 -0
  83. package/sites/home-services/components/hs-cta.jxn +139 -0
  84. package/sites/home-services/components/hs-feature.jxn +43 -0
  85. package/sites/home-services/components/hs-footer.jxn +169 -0
  86. package/sites/home-services/components/hs-gallery.jxn +51 -0
  87. package/sites/home-services/components/hs-hero.jxn +308 -0
  88. package/sites/home-services/components/hs-intro.jxn +97 -0
  89. package/sites/home-services/components/hs-nav.jxn +207 -0
  90. package/sites/home-services/components/hs-reservation.jxn +125 -0
  91. package/sites/home-services/components/hs-review.jxn +84 -0
  92. package/sites/home-services/components/hs-section-header.jxn +56 -0
  93. package/sites/home-services/components/hs-service-card.jxn +68 -0
  94. package/sites/home-services/components/hs-stat.jxn +40 -0
  95. package/sites/home-services/components/hs-step.jxn +67 -0
  96. package/sites/home-services/components/hs-trust-bar.jxn +183 -0
  97. package/sites/home-services/document.schema.json +26 -2
  98. package/sites/home-services/layouts/base.jxn +22 -0
  99. package/sites/home-services/package.json +3 -3
  100. package/sites/home-services/project.jxn +1 -1
  101. package/sites/museum/components/mu-band.jxn +63 -0
  102. package/sites/museum/components/mu-cta.jxn +76 -0
  103. package/sites/museum/components/mu-exhibition-card.jxn +118 -0
  104. package/sites/museum/components/mu-exhibition-row.jxn +142 -0
  105. package/sites/museum/components/mu-fact.jxn +40 -0
  106. package/sites/museum/components/mu-footer.jxn +206 -0
  107. package/sites/museum/components/mu-hero.jxn +165 -0
  108. package/sites/museum/components/mu-more.jxn +30 -0
  109. package/sites/museum/components/mu-oculus.jxn +33 -0
  110. package/sites/museum/components/mu-pagehead.jxn +76 -0
  111. package/sites/museum/components/mu-quote.jxn +36 -0
  112. package/sites/museum/document.schema.json +26 -2
  113. package/sites/museum/layouts/ar.jxn +31 -0
  114. package/sites/museum/layouts/base.jxn +227 -0
  115. package/sites/museum/layouts/fr-ca.jxn +30 -0
  116. package/sites/museum/package.json +3 -3
  117. package/sites/museum/pages/about.jxn +228 -0
  118. package/sites/museum/pages/ar/about.jxn +232 -0
  119. package/sites/museum/pages/ar/exhibitions/[slug].jxn +150 -0
  120. package/sites/museum/pages/ar/exhibitions/index.jxn +82 -0
  121. package/sites/museum/pages/ar/index.jxn +206 -0
  122. package/sites/museum/pages/ar/visit.jxn +270 -0
  123. package/sites/museum/pages/exhibitions/[slug].jxn +146 -0
  124. package/sites/museum/pages/exhibitions/index.jxn +78 -0
  125. package/sites/museum/pages/fr-ca/a-propos.jxn +233 -0
  126. package/sites/museum/pages/fr-ca/expositions/[slug].jxn +151 -0
  127. package/sites/museum/pages/fr-ca/expositions/index.jxn +83 -0
  128. package/sites/museum/pages/fr-ca/index.jxn +206 -0
  129. package/sites/museum/pages/fr-ca/visite.jxn +271 -0
  130. package/sites/museum/pages/index.jxn +202 -0
  131. package/sites/museum/pages/visit.jxn +266 -0
  132. package/sites/museum/project.jxn +1 -1
  133. package/sites/nonprofit/components/np-contact-form.jxn +97 -0
  134. package/sites/nonprofit/components/np-contact-info.jxn +104 -0
  135. package/sites/nonprofit/components/np-cta.jxn +163 -0
  136. package/sites/nonprofit/components/np-donate-tier.jxn +103 -0
  137. package/sites/nonprofit/components/np-feature.jxn +46 -0
  138. package/sites/nonprofit/components/np-footer.jxn +194 -0
  139. package/sites/nonprofit/components/np-hero.jxn +275 -0
  140. package/sites/nonprofit/components/np-impact-band.jxn +83 -0
  141. package/sites/nonprofit/components/np-intro.jxn +130 -0
  142. package/sites/nonprofit/components/np-nav.jxn +157 -0
  143. package/sites/nonprofit/components/np-program-card.jxn +95 -0
  144. package/sites/nonprofit/components/np-section-header.jxn +63 -0
  145. package/sites/nonprofit/components/np-stat.jxn +51 -0
  146. package/sites/nonprofit/components/np-step.jxn +73 -0
  147. package/sites/nonprofit/components/np-team-member.jxn +60 -0
  148. package/sites/nonprofit/components/np-testimonial.jxn +120 -0
  149. package/sites/nonprofit/document.schema.json +26 -2
  150. package/sites/nonprofit/layouts/base.jxn +17 -0
  151. package/sites/nonprofit/package.json +3 -3
  152. package/sites/nonprofit/project.jxn +1 -1
  153. package/sites/portfolio/components/pv-about-split.jxn +53 -0
  154. package/sites/portfolio/components/pv-category-pill.jxn +19 -0
  155. package/sites/portfolio/components/pv-contact-form.jxn +72 -0
  156. package/sites/portfolio/components/pv-cta.jxn +62 -0
  157. package/sites/portfolio/components/pv-feature.jxn +28 -0
  158. package/sites/portfolio/components/pv-footer.jxn +113 -0
  159. package/sites/portfolio/components/pv-gallery.jxn +40 -0
  160. package/sites/portfolio/components/pv-hero.jxn +109 -0
  161. package/sites/portfolio/components/pv-nav.jxn +76 -0
  162. package/sites/portfolio/components/pv-project-card.jxn +118 -0
  163. package/sites/portfolio/components/pv-project-grid.jxn +29 -0
  164. package/sites/portfolio/components/pv-section-header.jxn +65 -0
  165. package/sites/portfolio/document.schema.json +26 -2
  166. package/sites/portfolio/layouts/base.jxn +12 -0
  167. package/sites/portfolio/package.json +3 -3
  168. package/sites/portfolio/pages/[slug].jxn +177 -0
  169. package/sites/portfolio/project.jxn +1 -1
  170. package/sites/professional-firm/components/pf-article-header.jxn +60 -0
  171. package/sites/professional-firm/components/pf-contact-form.jxn +74 -0
  172. package/sites/professional-firm/components/pf-contact-info.jxn +101 -0
  173. package/sites/professional-firm/components/pf-cta.jxn +63 -0
  174. package/sites/professional-firm/components/pf-feature.jxn +32 -0
  175. package/sites/professional-firm/components/pf-footer.jxn +171 -0
  176. package/sites/professional-firm/components/pf-hero.jxn +139 -0
  177. package/sites/professional-firm/components/pf-insight-row.jxn +111 -0
  178. package/sites/professional-firm/components/pf-intro.jxn +68 -0
  179. package/sites/professional-firm/components/pf-logo-bar.jxn +90 -0
  180. package/sites/professional-firm/components/pf-nav.jxn +93 -0
  181. package/sites/professional-firm/components/pf-section-header.jxn +53 -0
  182. package/sites/professional-firm/components/pf-service-row.jxn +67 -0
  183. package/sites/professional-firm/components/pf-statband.jxn +135 -0
  184. package/sites/professional-firm/components/pf-team-member.jxn +53 -0
  185. package/sites/professional-firm/document.schema.json +26 -2
  186. package/sites/professional-firm/layouts/article.jxn +88 -0
  187. package/sites/professional-firm/layouts/base.jxn +12 -0
  188. package/sites/professional-firm/package.json +3 -3
  189. package/sites/professional-firm/pages/insights/[slug].jxn +106 -0
  190. package/sites/professional-firm/project.jxn +1 -1
  191. package/sites/real-estate/components/re-agent-band.jxn +165 -0
  192. package/sites/real-estate/components/re-agent-card.jxn +78 -0
  193. package/sites/real-estate/components/re-contact-form.jxn +119 -0
  194. package/sites/real-estate/components/re-cta.jxn +98 -0
  195. package/sites/real-estate/components/re-detail-row.jxn +18 -0
  196. package/sites/real-estate/components/re-feature.jxn +41 -0
  197. package/sites/real-estate/components/re-footer.jxn +219 -0
  198. package/sites/real-estate/components/re-hero.jxn +367 -0
  199. package/sites/real-estate/components/re-intro.jxn +43 -0
  200. package/sites/real-estate/components/re-listing-card.jxn +210 -0
  201. package/sites/real-estate/components/re-listings-filter.jxn +371 -0
  202. package/sites/real-estate/components/re-nav.jxn +162 -0
  203. package/sites/real-estate/components/re-neighborhood.jxn +101 -0
  204. package/sites/real-estate/components/re-section-header.jxn +55 -0
  205. package/sites/real-estate/components/re-stat.jxn +26 -0
  206. package/sites/real-estate/components/re-step.jxn +42 -0
  207. package/sites/real-estate/components/re-testimonial.jxn +66 -0
  208. package/sites/real-estate/document.schema.json +26 -2
  209. package/sites/real-estate/layouts/base.jxn +17 -0
  210. package/sites/real-estate/package.json +3 -3
  211. package/sites/real-estate/pages/[slug].jxn +452 -0
  212. package/sites/real-estate/project.jxn +1 -1
  213. package/sites/restaurant/components/bit-cta.jxn +105 -0
  214. package/sites/restaurant/components/bit-feature.jxn +38 -0
  215. package/sites/restaurant/components/bit-footer.jxn +142 -0
  216. package/sites/restaurant/components/bit-gallery.jxn +50 -0
  217. package/sites/restaurant/components/bit-hero.jxn +194 -0
  218. package/sites/restaurant/components/bit-hours.jxn +145 -0
  219. package/sites/restaurant/components/bit-intro.jxn +75 -0
  220. package/sites/restaurant/components/bit-menu-group.jxn +51 -0
  221. package/sites/restaurant/components/bit-menu-item.jxn +50 -0
  222. package/sites/restaurant/components/bit-nav.jxn +145 -0
  223. package/sites/restaurant/components/bit-reservation.jxn +90 -0
  224. package/sites/restaurant/components/bit-review.jxn +54 -0
  225. package/sites/restaurant/components/bit-section-header.jxn +73 -0
  226. package/sites/restaurant/document.schema.json +26 -2
  227. package/sites/restaurant/layouts/base.jxn +17 -0
  228. package/sites/restaurant/package.json +3 -3
  229. package/sites/restaurant/project.jxn +1 -1
  230. package/sites/saas/components/sa-check-item.jxn +25 -0
  231. package/sites/saas/components/sa-contact-form.jxn +94 -0
  232. package/sites/saas/components/sa-cta.jxn +68 -0
  233. package/sites/saas/components/sa-faq.jxn +347 -0
  234. package/sites/saas/components/sa-feature-card.jxn +57 -0
  235. package/sites/saas/components/sa-feature-split.jxn +43 -0
  236. package/sites/saas/components/sa-footer.jxn +106 -0
  237. package/sites/saas/components/sa-hero.jxn +217 -0
  238. package/sites/saas/components/sa-logo-cloud.jxn +98 -0
  239. package/sites/saas/components/sa-nav.jxn +108 -0
  240. package/sites/saas/components/sa-pricing.jxn +317 -0
  241. package/sites/saas/components/sa-section-header.jxn +43 -0
  242. package/sites/saas/components/sa-stat.jxn +32 -0
  243. package/sites/saas/components/sa-testimonial-card.jxn +37 -0
  244. package/sites/saas/document.schema.json +26 -2
  245. package/sites/saas/layouts/base.jxn +17 -0
  246. package/sites/saas/package.json +3 -3
  247. package/sites/saas/project.jxn +1 -1
  248. package/sites/shop/components/shp-badge.jxn +17 -0
  249. package/sites/shop/components/shp-category-tile.jxn +79 -0
  250. package/sites/shop/components/shp-contact-form.jxn +84 -0
  251. package/sites/shop/components/shp-cta.jxn +85 -0
  252. package/sites/shop/components/shp-feature.jxn +44 -0
  253. package/sites/shop/components/shp-footer.jxn +311 -0
  254. package/sites/shop/components/shp-hero.jxn +311 -0
  255. package/sites/shop/components/shp-intro.jxn +42 -0
  256. package/sites/shop/components/shp-nav.jxn +273 -0
  257. package/sites/shop/components/shp-newsletter.jxn +119 -0
  258. package/sites/shop/components/shp-product-card.jxn +187 -0
  259. package/sites/shop/components/shp-product-filter.jxn +263 -0
  260. package/sites/shop/components/shp-review.jxn +38 -0
  261. package/sites/shop/components/shp-section-header.jxn +61 -0
  262. package/sites/shop/components/shp-service.jxn +58 -0
  263. package/sites/shop/components/shp-stat.jxn +27 -0
  264. package/sites/shop/components/shp-trust.jxn +39 -0
  265. package/sites/shop/components/shp-visit-info.jxn +82 -0
  266. package/sites/shop/document.schema.json +26 -2
  267. package/sites/shop/layouts/base.jxn +17 -0
  268. package/sites/shop/package.json +3 -3
  269. package/sites/shop/pages/products/[sku].jxn +351 -0
  270. package/sites/shop/project.jxn +1 -1
  271. package/sites/blog/components/bl-author-bio.json +0 -86
  272. package/sites/blog/components/bl-contact-form.json +0 -114
  273. package/sites/blog/components/bl-contact-info.json +0 -54
  274. package/sites/blog/components/bl-cta.json +0 -68
  275. package/sites/blog/components/bl-footer.json +0 -122
  276. package/sites/blog/components/bl-masthead.json +0 -134
  277. package/sites/blog/components/bl-nav.json +0 -90
  278. package/sites/blog/components/bl-newsletter-cta.json +0 -134
  279. package/sites/blog/components/bl-post-card.json +0 -132
  280. package/sites/blog/components/bl-post-list.json +0 -10
  281. package/sites/blog/components/bl-prose.json +0 -89
  282. package/sites/blog/components/bl-section-header.json +0 -70
  283. package/sites/blog/components/bl-tag-pill.json +0 -29
  284. package/sites/blog/layouts/base.json +0 -22
  285. package/sites/blog/layouts/post.json +0 -15
  286. package/sites/blog/pages/[slug].json +0 -148
  287. package/sites/course/components/co-application.json +0 -225
  288. package/sites/course/components/co-cohort.json +0 -172
  289. package/sites/course/components/co-cta.json +0 -126
  290. package/sites/course/components/co-curriculum-accordion.json +0 -1476
  291. package/sites/course/components/co-faq.json +0 -524
  292. package/sites/course/components/co-footer.json +0 -195
  293. package/sites/course/components/co-hero.json +0 -475
  294. package/sites/course/components/co-instructor-card.json +0 -159
  295. package/sites/course/components/co-mentor.json +0 -65
  296. package/sites/course/components/co-module-card.json +0 -138
  297. package/sites/course/components/co-nav.json +0 -244
  298. package/sites/course/components/co-outcome-card.json +0 -84
  299. package/sites/course/components/co-outcomes.json +0 -248
  300. package/sites/course/components/co-pricing.json +0 -178
  301. package/sites/course/components/co-section-header.json +0 -74
  302. package/sites/course/components/co-testimonial-card.json +0 -109
  303. package/sites/course/layouts/base.json +0 -22
  304. package/sites/event/components/ev-agenda-tabs.json +0 -828
  305. package/sites/event/components/ev-cta.json +0 -126
  306. package/sites/event/components/ev-feature.json +0 -62
  307. package/sites/event/components/ev-footer.json +0 -197
  308. package/sites/event/components/ev-hero.json +0 -431
  309. package/sites/event/components/ev-nav.json +0 -186
  310. package/sites/event/components/ev-reason.json +0 -64
  311. package/sites/event/components/ev-savedate.json +0 -331
  312. package/sites/event/components/ev-section-header.json +0 -70
  313. package/sites/event/components/ev-session-row.json +0 -132
  314. package/sites/event/components/ev-speaker-card.json +0 -130
  315. package/sites/event/components/ev-sponsors.json +0 -131
  316. package/sites/event/components/ev-stat.json +0 -47
  317. package/sites/event/components/ev-ticket-card.json +0 -214
  318. package/sites/event/components/ev-venue.json +0 -86
  319. package/sites/event/layouts/base.json +0 -22
  320. package/sites/fitness-studio/components/fs-band.json +0 -149
  321. package/sites/fitness-studio/components/fs-booking.json +0 -147
  322. package/sites/fitness-studio/components/fs-class-card.json +0 -143
  323. package/sites/fitness-studio/components/fs-class-grid.json +0 -36
  324. package/sites/fitness-studio/components/fs-cta.json +0 -106
  325. package/sites/fitness-studio/components/fs-feature.json +0 -56
  326. package/sites/fitness-studio/components/fs-footer.json +0 -178
  327. package/sites/fitness-studio/components/fs-hero.json +0 -375
  328. package/sites/fitness-studio/components/fs-hours.json +0 -109
  329. package/sites/fitness-studio/components/fs-instructor-card.json +0 -136
  330. package/sites/fitness-studio/components/fs-intro.json +0 -294
  331. package/sites/fitness-studio/components/fs-modality.json +0 -171
  332. package/sites/fitness-studio/components/fs-nav.json +0 -128
  333. package/sites/fitness-studio/components/fs-pricing-card.json +0 -243
  334. package/sites/fitness-studio/components/fs-pricing-table.json +0 -458
  335. package/sites/fitness-studio/components/fs-review.json +0 -88
  336. package/sites/fitness-studio/components/fs-schedule.json +0 -1165
  337. package/sites/fitness-studio/components/fs-section-header.json +0 -77
  338. package/sites/fitness-studio/layouts/base.json +0 -22
  339. package/sites/home-services/components/hs-callbar.json +0 -72
  340. package/sites/home-services/components/hs-cta.json +0 -184
  341. package/sites/home-services/components/hs-feature.json +0 -62
  342. package/sites/home-services/components/hs-footer.json +0 -232
  343. package/sites/home-services/components/hs-gallery.json +0 -104
  344. package/sites/home-services/components/hs-hero.json +0 -446
  345. package/sites/home-services/components/hs-intro.json +0 -122
  346. package/sites/home-services/components/hs-nav.json +0 -278
  347. package/sites/home-services/components/hs-reservation.json +0 -225
  348. package/sites/home-services/components/hs-review.json +0 -114
  349. package/sites/home-services/components/hs-section-header.json +0 -70
  350. package/sites/home-services/components/hs-service-card.json +0 -89
  351. package/sites/home-services/components/hs-stat.json +0 -54
  352. package/sites/home-services/components/hs-step.json +0 -80
  353. package/sites/home-services/components/hs-trust-bar.json +0 -256
  354. package/sites/home-services/layouts/base.json +0 -24
  355. package/sites/museum/components/mu-band.json +0 -92
  356. package/sites/museum/components/mu-cta.json +0 -101
  357. package/sites/museum/components/mu-exhibition-card.json +0 -191
  358. package/sites/museum/components/mu-exhibition-row.json +0 -237
  359. package/sites/museum/components/mu-fact.json +0 -64
  360. package/sites/museum/components/mu-footer.json +0 -256
  361. package/sites/museum/components/mu-hero.json +0 -236
  362. package/sites/museum/components/mu-more.json +0 -63
  363. package/sites/museum/components/mu-oculus.json +0 -44
  364. package/sites/museum/components/mu-pagehead.json +0 -105
  365. package/sites/museum/components/mu-quote.json +0 -49
  366. package/sites/museum/layouts/ar.json +0 -29
  367. package/sites/museum/layouts/base.json +0 -329
  368. package/sites/museum/layouts/fr-ca.json +0 -28
  369. package/sites/museum/pages/about.json +0 -378
  370. package/sites/museum/pages/ar/about.json +0 -314
  371. package/sites/museum/pages/ar/exhibitions/[slug].json +0 -211
  372. package/sites/museum/pages/ar/exhibitions/index.json +0 -103
  373. package/sites/museum/pages/ar/index.json +0 -246
  374. package/sites/museum/pages/ar/visit.json +0 -327
  375. package/sites/museum/pages/exhibitions/[slug].json +0 -200
  376. package/sites/museum/pages/exhibitions/index.json +0 -93
  377. package/sites/museum/pages/fr-ca/a-propos.json +0 -313
  378. package/sites/museum/pages/fr-ca/expositions/[slug].json +0 -215
  379. package/sites/museum/pages/fr-ca/expositions/index.json +0 -104
  380. package/sites/museum/pages/fr-ca/index.json +0 -246
  381. package/sites/museum/pages/fr-ca/visite.json +0 -328
  382. package/sites/museum/pages/index.json +0 -236
  383. package/sites/museum/pages/visit.json +0 -317
  384. package/sites/nonprofit/components/np-contact-form.json +0 -162
  385. package/sites/nonprofit/components/np-contact-info.json +0 -159
  386. package/sites/nonprofit/components/np-cta.json +0 -203
  387. package/sites/nonprofit/components/np-donate-tier.json +0 -116
  388. package/sites/nonprofit/components/np-feature.json +0 -57
  389. package/sites/nonprofit/components/np-footer.json +0 -257
  390. package/sites/nonprofit/components/np-hero.json +0 -360
  391. package/sites/nonprofit/components/np-impact-band.json +0 -108
  392. package/sites/nonprofit/components/np-intro.json +0 -166
  393. package/sites/nonprofit/components/np-nav.json +0 -216
  394. package/sites/nonprofit/components/np-program-card.json +0 -129
  395. package/sites/nonprofit/components/np-section-header.json +0 -79
  396. package/sites/nonprofit/components/np-stat.json +0 -69
  397. package/sites/nonprofit/components/np-step.json +0 -84
  398. package/sites/nonprofit/components/np-team-member.json +0 -74
  399. package/sites/nonprofit/components/np-testimonial.json +0 -169
  400. package/sites/nonprofit/layouts/base.json +0 -22
  401. package/sites/portfolio/components/pv-about-split.json +0 -71
  402. package/sites/portfolio/components/pv-category-pill.json +0 -25
  403. package/sites/portfolio/components/pv-contact-form.json +0 -126
  404. package/sites/portfolio/components/pv-cta.json +0 -80
  405. package/sites/portfolio/components/pv-feature.json +0 -48
  406. package/sites/portfolio/components/pv-footer.json +0 -167
  407. package/sites/portfolio/components/pv-gallery.json +0 -50
  408. package/sites/portfolio/components/pv-hero.json +0 -139
  409. package/sites/portfolio/components/pv-nav.json +0 -100
  410. package/sites/portfolio/components/pv-project-card.json +0 -160
  411. package/sites/portfolio/components/pv-project-grid.json +0 -30
  412. package/sites/portfolio/components/pv-section-header.json +0 -90
  413. package/sites/portfolio/layouts/base.json +0 -22
  414. package/sites/portfolio/pages/[slug].json +0 -260
  415. package/sites/professional-firm/components/pf-article-header.json +0 -93
  416. package/sites/professional-firm/components/pf-contact-form.json +0 -146
  417. package/sites/professional-firm/components/pf-contact-info.json +0 -147
  418. package/sites/professional-firm/components/pf-cta.json +0 -86
  419. package/sites/professional-firm/components/pf-feature.json +0 -52
  420. package/sites/professional-firm/components/pf-footer.json +0 -231
  421. package/sites/professional-firm/components/pf-hero.json +0 -174
  422. package/sites/professional-firm/components/pf-insight-row.json +0 -144
  423. package/sites/professional-firm/components/pf-intro.json +0 -93
  424. package/sites/professional-firm/components/pf-logo-bar.json +0 -113
  425. package/sites/professional-firm/components/pf-nav.json +0 -135
  426. package/sites/professional-firm/components/pf-section-header.json +0 -77
  427. package/sites/professional-firm/components/pf-service-row.json +0 -104
  428. package/sites/professional-firm/components/pf-statband.json +0 -183
  429. package/sites/professional-firm/components/pf-team-member.json +0 -75
  430. package/sites/professional-firm/layouts/article.json +0 -130
  431. package/sites/professional-firm/layouts/base.json +0 -22
  432. package/sites/professional-firm/pages/insights/[slug].json +0 -129
  433. package/sites/real-estate/components/re-agent-band.json +0 -240
  434. package/sites/real-estate/components/re-agent-card.json +0 -93
  435. package/sites/real-estate/components/re-contact-form.json +0 -181
  436. package/sites/real-estate/components/re-cta.json +0 -128
  437. package/sites/real-estate/components/re-detail-row.json +0 -26
  438. package/sites/real-estate/components/re-feature.json +0 -57
  439. package/sites/real-estate/components/re-footer.json +0 -291
  440. package/sites/real-estate/components/re-hero.json +0 -536
  441. package/sites/real-estate/components/re-intro.json +0 -60
  442. package/sites/real-estate/components/re-listing-card.json +0 -286
  443. package/sites/real-estate/components/re-listings-filter.json +0 -454
  444. package/sites/real-estate/components/re-nav.json +0 -216
  445. package/sites/real-estate/components/re-neighborhood.json +0 -135
  446. package/sites/real-estate/components/re-section-header.json +0 -69
  447. package/sites/real-estate/components/re-stat.json +0 -37
  448. package/sites/real-estate/components/re-step.json +0 -58
  449. package/sites/real-estate/components/re-testimonial.json +0 -91
  450. package/sites/real-estate/layouts/base.json +0 -22
  451. package/sites/real-estate/pages/[slug].json +0 -629
  452. package/sites/restaurant/components/bit-cta.json +0 -140
  453. package/sites/restaurant/components/bit-feature.json +0 -61
  454. package/sites/restaurant/components/bit-footer.json +0 -191
  455. package/sites/restaurant/components/bit-gallery.json +0 -74
  456. package/sites/restaurant/components/bit-hero.json +0 -253
  457. package/sites/restaurant/components/bit-hours.json +0 -183
  458. package/sites/restaurant/components/bit-intro.json +0 -96
  459. package/sites/restaurant/components/bit-menu-group.json +0 -74
  460. package/sites/restaurant/components/bit-menu-item.json +0 -72
  461. package/sites/restaurant/components/bit-nav.json +0 -214
  462. package/sites/restaurant/components/bit-reservation.json +0 -155
  463. package/sites/restaurant/components/bit-review.json +0 -84
  464. package/sites/restaurant/components/bit-section-header.json +0 -98
  465. package/sites/restaurant/layouts/base.json +0 -22
  466. package/sites/saas/components/sa-check-item.json +0 -40
  467. package/sites/saas/components/sa-contact-form.json +0 -153
  468. package/sites/saas/components/sa-cta.json +0 -102
  469. package/sites/saas/components/sa-faq.json +0 -413
  470. package/sites/saas/components/sa-feature-card.json +0 -69
  471. package/sites/saas/components/sa-feature-split.json +0 -60
  472. package/sites/saas/components/sa-footer.json +0 -145
  473. package/sites/saas/components/sa-hero.json +0 -277
  474. package/sites/saas/components/sa-logo-cloud.json +0 -119
  475. package/sites/saas/components/sa-nav.json +0 -138
  476. package/sites/saas/components/sa-pricing.json +0 -428
  477. package/sites/saas/components/sa-section-header.json +0 -55
  478. package/sites/saas/components/sa-stat.json +0 -44
  479. package/sites/saas/components/sa-testimonial-card.json +0 -57
  480. package/sites/saas/layouts/base.json +0 -22
  481. package/sites/shop/components/shp-badge.json +0 -18
  482. package/sites/shop/components/shp-category-tile.json +0 -104
  483. package/sites/shop/components/shp-contact-form.json +0 -156
  484. package/sites/shop/components/shp-cta.json +0 -121
  485. package/sites/shop/components/shp-feature.json +0 -60
  486. package/sites/shop/components/shp-footer.json +0 -411
  487. package/sites/shop/components/shp-hero.json +0 -395
  488. package/sites/shop/components/shp-intro.json +0 -59
  489. package/sites/shop/components/shp-nav.json +0 -358
  490. package/sites/shop/components/shp-newsletter.json +0 -166
  491. package/sites/shop/components/shp-product-card.json +0 -238
  492. package/sites/shop/components/shp-product-filter.json +0 -366
  493. package/sites/shop/components/shp-review.json +0 -54
  494. package/sites/shop/components/shp-section-header.json +0 -75
  495. package/sites/shop/components/shp-service.json +0 -83
  496. package/sites/shop/components/shp-stat.json +0 -37
  497. package/sites/shop/components/shp-trust.json +0 -58
  498. package/sites/shop/components/shp-visit-info.json +0 -132
  499. package/sites/shop/layouts/base.json +0 -22
  500. package/sites/shop/pages/products/[sku].json +0 -482
@@ -0,0 +1,119 @@
1
+ /- kdl-version 2
2
+
3
+ shp-newsletter {
4
+ state {
5
+ eyebrow "Join the club"
6
+ heading "Get $10 off your first order"
7
+ text "New arrivals, seasonal sales, and shop events — plus a welcome code for your first ride. No spam, unsubscribe anytime."
8
+ }
9
+ style display=block padding="clamp(2.5rem, 6vw, 4rem) 1.5rem"
10
+ div {
11
+ style {
12
+ maxWidth "var(--max-width)"
13
+ margin "0 auto"
14
+ position relative
15
+ overflow hidden
16
+ borderRadius "var(--radius-lg)"
17
+ backgroundColor "var(--color-primary)"
18
+ backgroundImage "radial-gradient(circle at 88% 15%, rgba(255,255,255,0.22), transparent 42%), radial-gradient(circle at 6% 92%, rgba(13,17,23,0.25), transparent 46%)"
19
+ padding "clamp(2rem, 5vw, 3.25rem)"
20
+ display grid
21
+ gridTemplateColumns "1.1fr 1fr"
22
+ gap "clamp(1.75rem, 4vw, 3rem)"
23
+ alignItems center
24
+ @--md gridTemplateColumns="1fr"
25
+ }
26
+ div {
27
+ p {
28
+ style {
29
+ display inline-flex
30
+ alignItems center
31
+ gap "0.45rem"
32
+ margin "0 0 0.85rem"
33
+ fontSize "0.72rem"
34
+ fontWeight "800"
35
+ textTransform uppercase
36
+ letterSpacing "0.14em"
37
+ color "rgba(255,255,255,0.85)"
38
+ }
39
+ span ✦
40
+ span "${state.eyebrow}"
41
+ }
42
+ h2 "${state.heading}" {
43
+ style {
44
+ fontFamily "var(--font-heading)"
45
+ fontSize "clamp(1.7rem, 3.5vw, 2.5rem)"
46
+ fontWeight "800"
47
+ lineHeight "1.05"
48
+ letterSpacing "-0.025em"
49
+ margin "0 0 0.75rem"
50
+ color "var(--color-text-white)"
51
+ }
52
+ }
53
+ p "${state.text}" {
54
+ style {
55
+ margin "0"
56
+ fontSize "1.02rem"
57
+ lineHeight "1.6"
58
+ color "rgba(255,255,255,0.85)"
59
+ maxWidth "44ch"
60
+ }
61
+ }
62
+ }
63
+ form action="#" method=post {
64
+ style {
65
+ backgroundColor "var(--color-bg-white)"
66
+ borderRadius "var(--radius)"
67
+ padding "1.35rem"
68
+ boxShadow "var(--shadow-float)"
69
+ }
70
+ label for=nl-email "Email address" {
71
+ style {
72
+ display block
73
+ fontSize "0.72rem"
74
+ fontWeight "700"
75
+ textTransform uppercase
76
+ letterSpacing "0.1em"
77
+ color "var(--color-text-muted)"
78
+ marginBottom "0.55rem"
79
+ }
80
+ }
81
+ div {
82
+ style display=flex gap="0.5rem" {
83
+ @--sm flexDirection=column
84
+ }
85
+ input id=nl-email type=email name=email placeholder=you@email.com required="true" aria-label="Email address" {
86
+ style {
87
+ flex "1"
88
+ minWidth "0"
89
+ padding "0.85rem 1rem"
90
+ border "1px solid var(--color-line-strong)"
91
+ borderRadius "var(--radius-sm)"
92
+ fontSize "1rem"
93
+ fontFamily inherit
94
+ color "var(--color-text-primary)"
95
+ }
96
+ }
97
+ button type=submit "Get my code" {
98
+ style {
99
+ flexShrink "0"
100
+ backgroundColor "var(--color-ink)"
101
+ color "var(--color-text-white)"
102
+ padding "0.85rem 1.6rem"
103
+ border none
104
+ borderRadius "var(--radius-sm)"
105
+ fontSize "1rem"
106
+ fontFamily inherit
107
+ fontWeight "700"
108
+ cursor pointer
109
+ transition "transform 0.15s, background-color 0.15s"
110
+ :hover transform="translateY(-1px)" backgroundColor="#000000"
111
+ }
112
+ }
113
+ }
114
+ p "Demo form — wire it to your email provider in components/shp-newsletter.json." {
115
+ style margin="0.85rem 0 0" fontSize="0.8rem" color="var(--color-text-muted)"
116
+ }
117
+ }
118
+ }
119
+ }
@@ -0,0 +1,187 @@
1
+ /- kdl-version 2
2
+
3
+ shp-product-card {
4
+ state {
5
+ title ""
6
+ price ""
7
+ oldPrice ""
8
+ badge ""
9
+ category ""
10
+ href "/products/"
11
+ image type=string format=image default=""
12
+ }
13
+ style display=block height="100%"
14
+ a href="${state.href}" {
15
+ style {
16
+ display flex
17
+ flexDirection column
18
+ height "100%"
19
+ backgroundColor "var(--color-bg-white)"
20
+ border "1px solid var(--color-border)"
21
+ borderRadius "var(--radius)"
22
+ overflow hidden
23
+ textDecoration none
24
+ color inherit
25
+ boxShadow "var(--shadow-card)"
26
+ transition "border-color 0.18s, box-shadow 0.18s, transform 0.18s"
27
+ :hover {
28
+ borderColor "var(--color-primary)"
29
+ boxShadow "0 20px 44px -20px rgba(13,17,23,0.32)"
30
+ transform "translateY(-5px)"
31
+ }
32
+ ":hover img" transform="scale(1.06)"
33
+ ":hover .qadd" transform="translateY(0)" opacity="1"
34
+ }
35
+ div {
36
+ style {
37
+ position relative
38
+ aspectRatio "1 / 1"
39
+ overflow hidden
40
+ backgroundColor "var(--color-panel)"
41
+ }
42
+ img src="${state.image}" alt="${state.title}" loading=lazy {
43
+ style {
44
+ position absolute
45
+ inset "0"
46
+ width "100%"
47
+ height "100%"
48
+ objectFit cover
49
+ display block
50
+ transition "transform 0.5s cubic-bezier(0.22, 1, 0.36, 1)"
51
+ }
52
+ }
53
+ span "${state.badge}" {
54
+ style {
55
+ display "${state.badge ? 'inline-flex' : 'none'}"
56
+ position absolute
57
+ top "0.8rem"
58
+ left "0.8rem"
59
+ alignItems center
60
+ padding "0.28rem 0.65rem"
61
+ borderRadius "999px"
62
+ fontSize "0.68rem"
63
+ fontWeight "800"
64
+ textTransform uppercase
65
+ letterSpacing "0.06em"
66
+ color "var(--color-text-white)"
67
+ backgroundColor "${state.badge === 'Sale' ? 'var(--color-sale)' : (state.badge === 'New' ? 'var(--color-primary)' : 'var(--color-gold)')}"
68
+ boxShadow "0 6px 14px -6px rgba(13,17,23,0.5)"
69
+ }
70
+ }
71
+ span ♡ {
72
+ style {
73
+ position absolute
74
+ top "0.8rem"
75
+ right "0.8rem"
76
+ display inline-flex
77
+ alignItems center
78
+ justifyContent center
79
+ width "2rem"
80
+ height "2rem"
81
+ borderRadius "999px"
82
+ backgroundColor "rgba(255,255,255,0.92)"
83
+ color "var(--color-text-secondary)"
84
+ fontSize "0.95rem"
85
+ boxShadow "0 2px 8px rgba(13,17,23,0.18)"
86
+ }
87
+ }
88
+ div class=qadd {
89
+ style {
90
+ position absolute
91
+ left "0.7rem"
92
+ right "0.7rem"
93
+ bottom "0.7rem"
94
+ display flex
95
+ alignItems center
96
+ justifyContent center
97
+ gap "0.4rem"
98
+ padding "0.6rem 1rem"
99
+ borderRadius "999px"
100
+ backgroundColor "var(--color-ink)"
101
+ color "var(--color-text-white)"
102
+ fontSize "0.82rem"
103
+ fontWeight "700"
104
+ opacity "0"
105
+ transform "translateY(120%)"
106
+ transition "transform 0.22s cubic-bezier(0.22, 1, 0.36, 1), opacity 0.22s"
107
+ @--md opacity="1" transform="translateY(0)"
108
+ }
109
+ span + {
110
+ style color="var(--color-brand-bright)" fontSize="0.95rem"
111
+ }
112
+ span "Quick add"
113
+ }
114
+ }
115
+ div {
116
+ style padding="1.1rem 1.2rem 1.3rem" display=flex flexDirection=column flex="1"
117
+ div "${state.category}" {
118
+ style {
119
+ fontSize "0.7rem"
120
+ fontWeight "700"
121
+ textTransform uppercase
122
+ letterSpacing "0.1em"
123
+ color "var(--color-text-muted)"
124
+ marginBottom "0.4rem"
125
+ }
126
+ }
127
+ h3 "${state.title}" {
128
+ style {
129
+ fontFamily "var(--font-heading)"
130
+ fontSize "1.15rem"
131
+ fontWeight "700"
132
+ letterSpacing "-0.01em"
133
+ lineHeight "1.2"
134
+ margin "0"
135
+ }
136
+ }
137
+ div {
138
+ style {
139
+ marginTop auto
140
+ paddingTop "0.9rem"
141
+ display flex
142
+ alignItems center
143
+ justifyContent space-between
144
+ gap "0.75rem"
145
+ }
146
+ div {
147
+ style display=flex alignItems=baseline gap="0.5rem"
148
+ span "${state.price}" {
149
+ style {
150
+ fontFamily "var(--font-heading)"
151
+ fontSize "1.35rem"
152
+ fontWeight "800"
153
+ letterSpacing "-0.02em"
154
+ color "var(--color-text-primary)"
155
+ fontVariantNumeric tabular-nums
156
+ }
157
+ }
158
+ span "${state.oldPrice}" {
159
+ style {
160
+ display "${state.oldPrice ? 'inline' : 'none'}"
161
+ fontSize "0.92rem"
162
+ fontWeight "600"
163
+ color "var(--color-text-muted)"
164
+ textDecoration line-through
165
+ fontVariantNumeric tabular-nums
166
+ }
167
+ }
168
+ }
169
+ span → {
170
+ style {
171
+ display inline-flex
172
+ alignItems center
173
+ justifyContent center
174
+ width "2rem"
175
+ height "2rem"
176
+ borderRadius "999px"
177
+ backgroundColor "var(--color-brand-tint)"
178
+ color "var(--color-primary)"
179
+ fontSize "0.95rem"
180
+ fontWeight "800"
181
+ flexShrink "0"
182
+ }
183
+ }
184
+ }
185
+ }
186
+ }
187
+ }
@@ -0,0 +1,263 @@
1
+ /- kdl-version 2
2
+
3
+ shp-product-filter {
4
+ state {
5
+ category all
6
+ (fn)visibleCount "return ({ all: 8, Road: 2, Mountain: 2, Gravel: 1, Kids: 1, Accessories: 2 })[state.category];"
7
+ setAll {
8
+ $expression operator="=" target=(ref)"#/state/category" value=all
9
+ }
10
+ setRoad {
11
+ $expression operator="=" target=(ref)"#/state/category" value=Road
12
+ }
13
+ setMountain {
14
+ $expression operator="=" target=(ref)"#/state/category" value=Mountain
15
+ }
16
+ setGravel {
17
+ $expression operator="=" target=(ref)"#/state/category" value=Gravel
18
+ }
19
+ setKids {
20
+ $expression operator="=" target=(ref)"#/state/category" value=Kids
21
+ }
22
+ setAccessories {
23
+ $expression operator="=" target=(ref)"#/state/category" value=Accessories
24
+ }
25
+ }
26
+ style display=block minWidth="0"
27
+ $element "style" #"${state.category === 'all' ? '' : '#shop-grid > shp-product-card[data-category]{display:none} #shop-grid > shp-product-card[data-category="' + state.category + '"]{display:block}'}"#
28
+ aside {
29
+ style {
30
+ position sticky
31
+ top "7rem"
32
+ backgroundColor "var(--color-bg-white)"
33
+ border "1px solid var(--color-border)"
34
+ borderRadius "var(--radius-lg)"
35
+ boxShadow "var(--shadow-card)"
36
+ padding "1.4rem"
37
+ @--md position=static
38
+ }
39
+ div {
40
+ style {
41
+ display flex
42
+ alignItems center
43
+ justifyContent space-between
44
+ paddingBottom "1rem"
45
+ marginBottom "1.1rem"
46
+ borderBottom "1px solid var(--color-border)"
47
+ }
48
+ div {
49
+ style {
50
+ display inline-flex
51
+ alignItems center
52
+ gap "0.5rem"
53
+ fontFamily "var(--font-heading)"
54
+ fontWeight "800"
55
+ fontSize "1.05rem"
56
+ letterSpacing "-0.01em"
57
+ }
58
+ span ⚑ {
59
+ style color="var(--color-primary)"
60
+ }
61
+ span Filter
62
+ }
63
+ span {
64
+ style {
65
+ display inline-flex
66
+ alignItems center
67
+ gap "0.35rem"
68
+ padding "0.28rem 0.65rem"
69
+ borderRadius "999px"
70
+ backgroundColor "var(--color-brand-tint)"
71
+ color "var(--color-primary)"
72
+ fontWeight "800"
73
+ fontSize "0.8rem"
74
+ fontVariantNumeric tabular-nums
75
+ }
76
+ span "${state.visibleCount}"
77
+ span "of 8" {
78
+ style fontWeight="600" color="var(--color-text-muted)"
79
+ }
80
+ }
81
+ }
82
+ div Category {
83
+ style {
84
+ textTransform uppercase
85
+ letterSpacing "0.1em"
86
+ fontSize "0.7rem"
87
+ fontWeight "700"
88
+ color "var(--color-text-muted)"
89
+ marginBottom "0.75rem"
90
+ }
91
+ }
92
+ div {
93
+ style display=grid gap="0.4rem"
94
+ button onclick=(ref)"#/state/setAll" {
95
+ style {
96
+ display flex
97
+ alignItems center
98
+ justifyContent space-between
99
+ gap "0.5rem"
100
+ width "100%"
101
+ padding "0.6rem 0.85rem"
102
+ borderRadius "var(--radius-sm)"
103
+ border "1px solid ${state.category === 'all' ? 'var(--color-primary)' : 'var(--color-border)'}"
104
+ cursor pointer
105
+ fontFamily inherit
106
+ fontWeight "700"
107
+ fontSize "0.92rem"
108
+ textAlign left
109
+ transition "background-color 0.15s, color 0.15s, border-color 0.15s"
110
+ backgroundColor "${state.category === 'all' ? 'var(--color-primary)' : 'var(--color-bg-white)'}"
111
+ color "${state.category === 'all' ? 'var(--color-text-white)' : 'var(--color-text-primary)'}"
112
+ }
113
+ span "All bikes & gear"
114
+ span "8" {
115
+ style fontVariantNumeric=tabular-nums opacity="0.7" fontWeight="600"
116
+ }
117
+ }
118
+ button onclick=(ref)"#/state/setRoad" {
119
+ style {
120
+ display flex
121
+ alignItems center
122
+ justifyContent space-between
123
+ gap "0.5rem"
124
+ width "100%"
125
+ padding "0.6rem 0.85rem"
126
+ borderRadius "var(--radius-sm)"
127
+ border "1px solid ${state.category === 'Road' ? 'var(--color-primary)' : 'var(--color-border)'}"
128
+ cursor pointer
129
+ fontFamily inherit
130
+ fontWeight "700"
131
+ fontSize "0.92rem"
132
+ textAlign left
133
+ transition "background-color 0.15s, color 0.15s, border-color 0.15s"
134
+ backgroundColor "${state.category === 'Road' ? 'var(--color-primary)' : 'var(--color-bg-white)'}"
135
+ color "${state.category === 'Road' ? 'var(--color-text-white)' : 'var(--color-text-primary)'}"
136
+ }
137
+ span Road
138
+ span "2" {
139
+ style fontVariantNumeric=tabular-nums opacity="0.7" fontWeight="600"
140
+ }
141
+ }
142
+ button onclick=(ref)"#/state/setMountain" {
143
+ style {
144
+ display flex
145
+ alignItems center
146
+ justifyContent space-between
147
+ gap "0.5rem"
148
+ width "100%"
149
+ padding "0.6rem 0.85rem"
150
+ borderRadius "var(--radius-sm)"
151
+ border "1px solid ${state.category === 'Mountain' ? 'var(--color-primary)' : 'var(--color-border)'}"
152
+ cursor pointer
153
+ fontFamily inherit
154
+ fontWeight "700"
155
+ fontSize "0.92rem"
156
+ textAlign left
157
+ transition "background-color 0.15s, color 0.15s, border-color 0.15s"
158
+ backgroundColor "${state.category === 'Mountain' ? 'var(--color-primary)' : 'var(--color-bg-white)'}"
159
+ color "${state.category === 'Mountain' ? 'var(--color-text-white)' : 'var(--color-text-primary)'}"
160
+ }
161
+ span Mountain
162
+ span "2" {
163
+ style fontVariantNumeric=tabular-nums opacity="0.7" fontWeight="600"
164
+ }
165
+ }
166
+ button onclick=(ref)"#/state/setGravel" {
167
+ style {
168
+ display flex
169
+ alignItems center
170
+ justifyContent space-between
171
+ gap "0.5rem"
172
+ width "100%"
173
+ padding "0.6rem 0.85rem"
174
+ borderRadius "var(--radius-sm)"
175
+ border "1px solid ${state.category === 'Gravel' ? 'var(--color-primary)' : 'var(--color-border)'}"
176
+ cursor pointer
177
+ fontFamily inherit
178
+ fontWeight "700"
179
+ fontSize "0.92rem"
180
+ textAlign left
181
+ transition "background-color 0.15s, color 0.15s, border-color 0.15s"
182
+ backgroundColor "${state.category === 'Gravel' ? 'var(--color-primary)' : 'var(--color-bg-white)'}"
183
+ color "${state.category === 'Gravel' ? 'var(--color-text-white)' : 'var(--color-text-primary)'}"
184
+ }
185
+ span Gravel
186
+ span "1" {
187
+ style fontVariantNumeric=tabular-nums opacity="0.7" fontWeight="600"
188
+ }
189
+ }
190
+ button onclick=(ref)"#/state/setKids" {
191
+ style {
192
+ display flex
193
+ alignItems center
194
+ justifyContent space-between
195
+ gap "0.5rem"
196
+ width "100%"
197
+ padding "0.6rem 0.85rem"
198
+ borderRadius "var(--radius-sm)"
199
+ border "1px solid ${state.category === 'Kids' ? 'var(--color-primary)' : 'var(--color-border)'}"
200
+ cursor pointer
201
+ fontFamily inherit
202
+ fontWeight "700"
203
+ fontSize "0.92rem"
204
+ textAlign left
205
+ transition "background-color 0.15s, color 0.15s, border-color 0.15s"
206
+ backgroundColor "${state.category === 'Kids' ? 'var(--color-primary)' : 'var(--color-bg-white)'}"
207
+ color "${state.category === 'Kids' ? 'var(--color-text-white)' : 'var(--color-text-primary)'}"
208
+ }
209
+ span Kids
210
+ span "1" {
211
+ style fontVariantNumeric=tabular-nums opacity="0.7" fontWeight="600"
212
+ }
213
+ }
214
+ button onclick=(ref)"#/state/setAccessories" {
215
+ style {
216
+ display flex
217
+ alignItems center
218
+ justifyContent space-between
219
+ gap "0.5rem"
220
+ width "100%"
221
+ padding "0.6rem 0.85rem"
222
+ borderRadius "var(--radius-sm)"
223
+ border "1px solid ${state.category === 'Accessories' ? 'var(--color-primary)' : 'var(--color-border)'}"
224
+ cursor pointer
225
+ fontFamily inherit
226
+ fontWeight "700"
227
+ fontSize "0.92rem"
228
+ textAlign left
229
+ transition "background-color 0.15s, color 0.15s, border-color 0.15s"
230
+ backgroundColor "${state.category === 'Accessories' ? 'var(--color-primary)' : 'var(--color-bg-white)'}"
231
+ color "${state.category === 'Accessories' ? 'var(--color-text-white)' : 'var(--color-text-primary)'}"
232
+ }
233
+ span Accessories
234
+ span "2" {
235
+ style fontVariantNumeric=tabular-nums opacity="0.7" fontWeight="600"
236
+ }
237
+ }
238
+ }
239
+ div {
240
+ style {
241
+ marginTop "1.3rem"
242
+ padding "0.9rem 1rem"
243
+ borderRadius "var(--radius-sm)"
244
+ backgroundColor "var(--color-bg-cream)"
245
+ display flex
246
+ alignItems center
247
+ gap "0.6rem"
248
+ }
249
+ span 🔧 {
250
+ style fontSize="1.1rem"
251
+ }
252
+ p "Every bike ships fitted with a free first tune-up." {
253
+ style {
254
+ margin "0"
255
+ fontSize "0.8rem"
256
+ lineHeight "1.45"
257
+ color "var(--color-text-secondary)"
258
+ fontWeight "500"
259
+ }
260
+ }
261
+ }
262
+ }
263
+ }
@@ -0,0 +1,38 @@
1
+ /- kdl-version 2
2
+
3
+ shp-review {
4
+ state quote="" author="" role=""
5
+ style {
6
+ display block
7
+ padding "1.75rem"
8
+ backgroundColor "var(--color-bg-white)"
9
+ border "1px solid var(--color-border)"
10
+ borderRadius "var(--radius)"
11
+ boxShadow "0 4px 20px rgba(15,23,42,0.05)"
12
+ }
13
+ div ★★★★★ {
14
+ style {
15
+ color "var(--color-accent)"
16
+ fontSize "1.1rem"
17
+ marginBottom "0.75rem"
18
+ letterSpacing "0.1em"
19
+ }
20
+ }
21
+ p "“${state.quote}”" {
22
+ style {
23
+ fontFamily "var(--font-heading)"
24
+ fontSize "1.15rem"
25
+ lineHeight "1.6"
26
+ fontWeight "500"
27
+ margin "0 0 1.25rem"
28
+ }
29
+ }
30
+ div {
31
+ div "${state.author}" {
32
+ style fontWeight="600"
33
+ }
34
+ div "${state.role}" {
35
+ style fontSize="0.9rem" color="var(--color-text-muted)"
36
+ }
37
+ }
38
+ }
@@ -0,0 +1,61 @@
1
+ /- kdl-version 2
2
+
3
+ shp-section-header {
4
+ state eyebrow="" heading="" subheading="" align=left
5
+ style {
6
+ display flex
7
+ flexDirection column
8
+ gap "0.85rem"
9
+ maxWidth "var(--max-width)"
10
+ margin "0 auto 2rem"
11
+ padding "0 1.5rem"
12
+ alignItems "${state.align === 'center' ? 'center' : 'flex-start'}"
13
+ textAlign "${state.align === 'center' ? 'center' : 'left'}"
14
+ }
15
+ p {
16
+ style {
17
+ display "${state.eyebrow ? 'inline-flex' : 'none'}"
18
+ alignItems center
19
+ gap "0.45rem"
20
+ padding "0.34rem 0.8rem 0.34rem 0.65rem"
21
+ borderRadius "999px"
22
+ backgroundColor "var(--color-brand-tint)"
23
+ color "var(--color-primary-hover)"
24
+ fontSize "0.72rem"
25
+ fontWeight "800"
26
+ textTransform uppercase
27
+ letterSpacing "0.1em"
28
+ margin "0"
29
+ }
30
+ span {
31
+ style {
32
+ width "0.42rem"
33
+ height "0.42rem"
34
+ borderRadius "999px"
35
+ backgroundColor "var(--color-primary)"
36
+ }
37
+ }
38
+ span "${state.eyebrow}"
39
+ }
40
+ h2 "${state.heading}" {
41
+ style {
42
+ fontFamily "var(--font-heading)"
43
+ fontSize "clamp(1.9rem, 4vw, 2.75rem)"
44
+ fontWeight "800"
45
+ lineHeight "1.05"
46
+ letterSpacing "-0.03em"
47
+ margin "0"
48
+ color "var(--color-text-primary)"
49
+ }
50
+ }
51
+ p "${state.subheading}" {
52
+ style {
53
+ display "${state.subheading ? 'block' : 'none'}"
54
+ fontSize "1.08rem"
55
+ lineHeight "1.65"
56
+ color "var(--color-text-muted)"
57
+ margin "0"
58
+ maxWidth "58ch"
59
+ }
60
+ }
61
+ }