@jxsuite/starters 3.3.2 → 3.5.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 (513) 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 +11 -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 +86 -0
  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 +11 -2
  38. package/sites/course/layouts/base.jxn +17 -0
  39. package/sites/course/package.json +3 -3
  40. package/sites/course/project.jxn +94 -0
  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 +11 -2
  57. package/sites/event/layouts/base.jxn +12 -0
  58. package/sites/event/package.json +3 -3
  59. package/sites/event/project.jxn +114 -0
  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 +11 -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 +124 -0
  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 +11 -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 +113 -0
  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 +11 -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 +130 -0
  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 +11 -2
  150. package/sites/nonprofit/layouts/base.jxn +17 -0
  151. package/sites/nonprofit/package.json +3 -3
  152. package/sites/nonprofit/project.jxn +99 -0
  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 +11 -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 +85 -0
  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 +11 -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 +94 -0
  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 +11 -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 +103 -0
  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 +11 -2
  227. package/sites/restaurant/layouts/base.jxn +17 -0
  228. package/sites/restaurant/package.json +3 -3
  229. package/sites/restaurant/project.jxn +93 -0
  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 +11 -2
  245. package/sites/saas/layouts/base.jxn +17 -0
  246. package/sites/saas/package.json +3 -3
  247. package/sites/saas/project.jxn +119 -0
  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 +11 -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 +100 -0
  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/blog/project.json +0 -140
  288. package/sites/course/components/co-application.json +0 -225
  289. package/sites/course/components/co-cohort.json +0 -172
  290. package/sites/course/components/co-cta.json +0 -126
  291. package/sites/course/components/co-curriculum-accordion.json +0 -1476
  292. package/sites/course/components/co-faq.json +0 -524
  293. package/sites/course/components/co-footer.json +0 -195
  294. package/sites/course/components/co-hero.json +0 -475
  295. package/sites/course/components/co-instructor-card.json +0 -159
  296. package/sites/course/components/co-mentor.json +0 -65
  297. package/sites/course/components/co-module-card.json +0 -138
  298. package/sites/course/components/co-nav.json +0 -244
  299. package/sites/course/components/co-outcome-card.json +0 -84
  300. package/sites/course/components/co-outcomes.json +0 -248
  301. package/sites/course/components/co-pricing.json +0 -178
  302. package/sites/course/components/co-section-header.json +0 -74
  303. package/sites/course/components/co-testimonial-card.json +0 -109
  304. package/sites/course/layouts/base.json +0 -22
  305. package/sites/course/project.json +0 -141
  306. package/sites/event/components/ev-agenda-tabs.json +0 -828
  307. package/sites/event/components/ev-cta.json +0 -126
  308. package/sites/event/components/ev-feature.json +0 -62
  309. package/sites/event/components/ev-footer.json +0 -197
  310. package/sites/event/components/ev-hero.json +0 -431
  311. package/sites/event/components/ev-nav.json +0 -186
  312. package/sites/event/components/ev-reason.json +0 -64
  313. package/sites/event/components/ev-savedate.json +0 -331
  314. package/sites/event/components/ev-section-header.json +0 -70
  315. package/sites/event/components/ev-session-row.json +0 -132
  316. package/sites/event/components/ev-speaker-card.json +0 -130
  317. package/sites/event/components/ev-sponsors.json +0 -131
  318. package/sites/event/components/ev-stat.json +0 -47
  319. package/sites/event/components/ev-ticket-card.json +0 -214
  320. package/sites/event/components/ev-venue.json +0 -86
  321. package/sites/event/layouts/base.json +0 -22
  322. package/sites/event/project.json +0 -163
  323. package/sites/fitness-studio/components/fs-band.json +0 -149
  324. package/sites/fitness-studio/components/fs-booking.json +0 -147
  325. package/sites/fitness-studio/components/fs-class-card.json +0 -143
  326. package/sites/fitness-studio/components/fs-class-grid.json +0 -36
  327. package/sites/fitness-studio/components/fs-cta.json +0 -106
  328. package/sites/fitness-studio/components/fs-feature.json +0 -56
  329. package/sites/fitness-studio/components/fs-footer.json +0 -178
  330. package/sites/fitness-studio/components/fs-hero.json +0 -375
  331. package/sites/fitness-studio/components/fs-hours.json +0 -109
  332. package/sites/fitness-studio/components/fs-instructor-card.json +0 -136
  333. package/sites/fitness-studio/components/fs-intro.json +0 -294
  334. package/sites/fitness-studio/components/fs-modality.json +0 -171
  335. package/sites/fitness-studio/components/fs-nav.json +0 -128
  336. package/sites/fitness-studio/components/fs-pricing-card.json +0 -243
  337. package/sites/fitness-studio/components/fs-pricing-table.json +0 -458
  338. package/sites/fitness-studio/components/fs-review.json +0 -88
  339. package/sites/fitness-studio/components/fs-schedule.json +0 -1165
  340. package/sites/fitness-studio/components/fs-section-header.json +0 -77
  341. package/sites/fitness-studio/layouts/base.json +0 -22
  342. package/sites/fitness-studio/project.json +0 -175
  343. package/sites/home-services/components/hs-callbar.json +0 -72
  344. package/sites/home-services/components/hs-cta.json +0 -184
  345. package/sites/home-services/components/hs-feature.json +0 -62
  346. package/sites/home-services/components/hs-footer.json +0 -232
  347. package/sites/home-services/components/hs-gallery.json +0 -104
  348. package/sites/home-services/components/hs-hero.json +0 -446
  349. package/sites/home-services/components/hs-intro.json +0 -122
  350. package/sites/home-services/components/hs-nav.json +0 -278
  351. package/sites/home-services/components/hs-reservation.json +0 -225
  352. package/sites/home-services/components/hs-review.json +0 -114
  353. package/sites/home-services/components/hs-section-header.json +0 -70
  354. package/sites/home-services/components/hs-service-card.json +0 -89
  355. package/sites/home-services/components/hs-stat.json +0 -54
  356. package/sites/home-services/components/hs-step.json +0 -80
  357. package/sites/home-services/components/hs-trust-bar.json +0 -256
  358. package/sites/home-services/layouts/base.json +0 -24
  359. package/sites/home-services/project.json +0 -160
  360. package/sites/museum/components/mu-band.json +0 -92
  361. package/sites/museum/components/mu-cta.json +0 -101
  362. package/sites/museum/components/mu-exhibition-card.json +0 -191
  363. package/sites/museum/components/mu-exhibition-row.json +0 -237
  364. package/sites/museum/components/mu-fact.json +0 -64
  365. package/sites/museum/components/mu-footer.json +0 -256
  366. package/sites/museum/components/mu-hero.json +0 -236
  367. package/sites/museum/components/mu-more.json +0 -63
  368. package/sites/museum/components/mu-oculus.json +0 -44
  369. package/sites/museum/components/mu-pagehead.json +0 -105
  370. package/sites/museum/components/mu-quote.json +0 -49
  371. package/sites/museum/layouts/ar.json +0 -29
  372. package/sites/museum/layouts/base.json +0 -329
  373. package/sites/museum/layouts/fr-ca.json +0 -28
  374. package/sites/museum/pages/about.json +0 -378
  375. package/sites/museum/pages/ar/about.json +0 -314
  376. package/sites/museum/pages/ar/exhibitions/[slug].json +0 -211
  377. package/sites/museum/pages/ar/exhibitions/index.json +0 -103
  378. package/sites/museum/pages/ar/index.json +0 -246
  379. package/sites/museum/pages/ar/visit.json +0 -327
  380. package/sites/museum/pages/exhibitions/[slug].json +0 -200
  381. package/sites/museum/pages/exhibitions/index.json +0 -93
  382. package/sites/museum/pages/fr-ca/a-propos.json +0 -313
  383. package/sites/museum/pages/fr-ca/expositions/[slug].json +0 -215
  384. package/sites/museum/pages/fr-ca/expositions/index.json +0 -104
  385. package/sites/museum/pages/fr-ca/index.json +0 -246
  386. package/sites/museum/pages/fr-ca/visite.json +0 -328
  387. package/sites/museum/pages/index.json +0 -236
  388. package/sites/museum/pages/visit.json +0 -317
  389. package/sites/museum/project.json +0 -179
  390. package/sites/nonprofit/components/np-contact-form.json +0 -162
  391. package/sites/nonprofit/components/np-contact-info.json +0 -159
  392. package/sites/nonprofit/components/np-cta.json +0 -203
  393. package/sites/nonprofit/components/np-donate-tier.json +0 -116
  394. package/sites/nonprofit/components/np-feature.json +0 -57
  395. package/sites/nonprofit/components/np-footer.json +0 -257
  396. package/sites/nonprofit/components/np-hero.json +0 -360
  397. package/sites/nonprofit/components/np-impact-band.json +0 -108
  398. package/sites/nonprofit/components/np-intro.json +0 -166
  399. package/sites/nonprofit/components/np-nav.json +0 -216
  400. package/sites/nonprofit/components/np-program-card.json +0 -129
  401. package/sites/nonprofit/components/np-section-header.json +0 -79
  402. package/sites/nonprofit/components/np-stat.json +0 -69
  403. package/sites/nonprofit/components/np-step.json +0 -84
  404. package/sites/nonprofit/components/np-team-member.json +0 -74
  405. package/sites/nonprofit/components/np-testimonial.json +0 -169
  406. package/sites/nonprofit/layouts/base.json +0 -22
  407. package/sites/nonprofit/project.json +0 -147
  408. package/sites/portfolio/components/pv-about-split.json +0 -71
  409. package/sites/portfolio/components/pv-category-pill.json +0 -25
  410. package/sites/portfolio/components/pv-contact-form.json +0 -126
  411. package/sites/portfolio/components/pv-cta.json +0 -80
  412. package/sites/portfolio/components/pv-feature.json +0 -48
  413. package/sites/portfolio/components/pv-footer.json +0 -167
  414. package/sites/portfolio/components/pv-gallery.json +0 -50
  415. package/sites/portfolio/components/pv-hero.json +0 -139
  416. package/sites/portfolio/components/pv-nav.json +0 -100
  417. package/sites/portfolio/components/pv-project-card.json +0 -160
  418. package/sites/portfolio/components/pv-project-grid.json +0 -30
  419. package/sites/portfolio/components/pv-section-header.json +0 -90
  420. package/sites/portfolio/layouts/base.json +0 -22
  421. package/sites/portfolio/pages/[slug].json +0 -260
  422. package/sites/portfolio/project.json +0 -137
  423. package/sites/professional-firm/components/pf-article-header.json +0 -93
  424. package/sites/professional-firm/components/pf-contact-form.json +0 -146
  425. package/sites/professional-firm/components/pf-contact-info.json +0 -147
  426. package/sites/professional-firm/components/pf-cta.json +0 -86
  427. package/sites/professional-firm/components/pf-feature.json +0 -52
  428. package/sites/professional-firm/components/pf-footer.json +0 -231
  429. package/sites/professional-firm/components/pf-hero.json +0 -174
  430. package/sites/professional-firm/components/pf-insight-row.json +0 -144
  431. package/sites/professional-firm/components/pf-intro.json +0 -93
  432. package/sites/professional-firm/components/pf-logo-bar.json +0 -113
  433. package/sites/professional-firm/components/pf-nav.json +0 -135
  434. package/sites/professional-firm/components/pf-section-header.json +0 -77
  435. package/sites/professional-firm/components/pf-service-row.json +0 -104
  436. package/sites/professional-firm/components/pf-statband.json +0 -183
  437. package/sites/professional-firm/components/pf-team-member.json +0 -75
  438. package/sites/professional-firm/layouts/article.json +0 -130
  439. package/sites/professional-firm/layouts/base.json +0 -22
  440. package/sites/professional-firm/pages/insights/[slug].json +0 -129
  441. package/sites/professional-firm/project.json +0 -145
  442. package/sites/real-estate/components/re-agent-band.json +0 -240
  443. package/sites/real-estate/components/re-agent-card.json +0 -93
  444. package/sites/real-estate/components/re-contact-form.json +0 -181
  445. package/sites/real-estate/components/re-cta.json +0 -128
  446. package/sites/real-estate/components/re-detail-row.json +0 -26
  447. package/sites/real-estate/components/re-feature.json +0 -57
  448. package/sites/real-estate/components/re-footer.json +0 -291
  449. package/sites/real-estate/components/re-hero.json +0 -536
  450. package/sites/real-estate/components/re-intro.json +0 -60
  451. package/sites/real-estate/components/re-listing-card.json +0 -286
  452. package/sites/real-estate/components/re-listings-filter.json +0 -454
  453. package/sites/real-estate/components/re-nav.json +0 -216
  454. package/sites/real-estate/components/re-neighborhood.json +0 -135
  455. package/sites/real-estate/components/re-section-header.json +0 -69
  456. package/sites/real-estate/components/re-stat.json +0 -37
  457. package/sites/real-estate/components/re-step.json +0 -58
  458. package/sites/real-estate/components/re-testimonial.json +0 -91
  459. package/sites/real-estate/layouts/base.json +0 -22
  460. package/sites/real-estate/pages/[slug].json +0 -629
  461. package/sites/real-estate/project.json +0 -163
  462. package/sites/restaurant/components/bit-cta.json +0 -140
  463. package/sites/restaurant/components/bit-feature.json +0 -61
  464. package/sites/restaurant/components/bit-footer.json +0 -191
  465. package/sites/restaurant/components/bit-gallery.json +0 -74
  466. package/sites/restaurant/components/bit-hero.json +0 -253
  467. package/sites/restaurant/components/bit-hours.json +0 -183
  468. package/sites/restaurant/components/bit-intro.json +0 -96
  469. package/sites/restaurant/components/bit-menu-group.json +0 -74
  470. package/sites/restaurant/components/bit-menu-item.json +0 -72
  471. package/sites/restaurant/components/bit-nav.json +0 -214
  472. package/sites/restaurant/components/bit-reservation.json +0 -155
  473. package/sites/restaurant/components/bit-review.json +0 -84
  474. package/sites/restaurant/components/bit-section-header.json +0 -98
  475. package/sites/restaurant/layouts/base.json +0 -22
  476. package/sites/restaurant/project.json +0 -145
  477. package/sites/saas/components/sa-check-item.json +0 -40
  478. package/sites/saas/components/sa-contact-form.json +0 -153
  479. package/sites/saas/components/sa-cta.json +0 -102
  480. package/sites/saas/components/sa-faq.json +0 -413
  481. package/sites/saas/components/sa-feature-card.json +0 -69
  482. package/sites/saas/components/sa-feature-split.json +0 -60
  483. package/sites/saas/components/sa-footer.json +0 -145
  484. package/sites/saas/components/sa-hero.json +0 -277
  485. package/sites/saas/components/sa-logo-cloud.json +0 -119
  486. package/sites/saas/components/sa-nav.json +0 -138
  487. package/sites/saas/components/sa-pricing.json +0 -428
  488. package/sites/saas/components/sa-section-header.json +0 -55
  489. package/sites/saas/components/sa-stat.json +0 -44
  490. package/sites/saas/components/sa-testimonial-card.json +0 -57
  491. package/sites/saas/layouts/base.json +0 -22
  492. package/sites/saas/project.json +0 -166
  493. package/sites/shop/components/shp-badge.json +0 -18
  494. package/sites/shop/components/shp-category-tile.json +0 -104
  495. package/sites/shop/components/shp-contact-form.json +0 -156
  496. package/sites/shop/components/shp-cta.json +0 -121
  497. package/sites/shop/components/shp-feature.json +0 -60
  498. package/sites/shop/components/shp-footer.json +0 -411
  499. package/sites/shop/components/shp-hero.json +0 -395
  500. package/sites/shop/components/shp-intro.json +0 -59
  501. package/sites/shop/components/shp-nav.json +0 -358
  502. package/sites/shop/components/shp-newsletter.json +0 -166
  503. package/sites/shop/components/shp-product-card.json +0 -238
  504. package/sites/shop/components/shp-product-filter.json +0 -366
  505. package/sites/shop/components/shp-review.json +0 -54
  506. package/sites/shop/components/shp-section-header.json +0 -75
  507. package/sites/shop/components/shp-service.json +0 -83
  508. package/sites/shop/components/shp-stat.json +0 -37
  509. package/sites/shop/components/shp-trust.json +0 -58
  510. package/sites/shop/components/shp-visit-info.json +0 -132
  511. package/sites/shop/layouts/base.json +0 -22
  512. package/sites/shop/pages/products/[sku].json +0 -482
  513. package/sites/shop/project.json +0 -156
@@ -0,0 +1,106 @@
1
+ /- kdl-version 2
2
+ $layout "./layouts/article.jxn"
3
+ $paths contentType=insights param=slug field=id
4
+
5
+ $element .title="${state.entry.data.title} — Meridian Advisory" {
6
+ state {
7
+ entry {
8
+ $prototype ContentEntry
9
+ $src "@jxsuite/parser/ContentEntry.class.json"
10
+ contentType insights
11
+ field id
12
+ id (ref)"#/$params/slug"
13
+ }
14
+ }
15
+ article {
16
+ pf-article-header {
17
+ $props {
18
+ eyebrow "${state.entry.data.category}"
19
+ title "${state.entry.data.title}"
20
+ date "${state.entry.data.date}"
21
+ author "${state.entry.data.author}"
22
+ readingTime "${state.entry._meta.readingTime}"
23
+ }
24
+ }
25
+ div {
26
+ style {
27
+ fontFamily "var(--font-serif)"
28
+ fontSize "1.2rem"
29
+ lineHeight "1.8"
30
+ color "var(--color-ink)"
31
+ "& p:first-of-type::first-letter" {
32
+ float left
33
+ fontFamily "var(--font-serif)"
34
+ fontSize "3.6em"
35
+ lineHeight "0.82"
36
+ fontWeight "600"
37
+ padding "0.02em 0.14em 0 0"
38
+ color "var(--color-accent)"
39
+ }
40
+ }
41
+ .children {
42
+ $array items=(ref)"#/state/entry/$children" {
43
+ p "${item.textContent}" {
44
+ style margin="0 0 1.5rem"
45
+ }
46
+ }
47
+ }
48
+ }
49
+ div "Written by ${state.entry.data.author} · Meridian Advisory" {
50
+ style {
51
+ marginTop "2.5rem"
52
+ paddingTop "1.5rem"
53
+ borderTop "1px solid var(--color-hairline)"
54
+ fontFamily "var(--font-sans)"
55
+ fontSize "0.78rem"
56
+ textTransform uppercase
57
+ letterSpacing "0.12em"
58
+ color "var(--color-muted)"
59
+ }
60
+ }
61
+ div {
62
+ style {
63
+ marginTop "2.5rem"
64
+ backgroundColor "var(--color-ink-deep)"
65
+ color "var(--color-text-white)"
66
+ borderTop "3px solid var(--color-accent)"
67
+ padding "2rem"
68
+ display flex
69
+ flexWrap wrap
70
+ alignItems center
71
+ justifyContent space-between
72
+ gap "1.25rem"
73
+ }
74
+ div {
75
+ div "Have a question this raised?" {
76
+ style {
77
+ fontFamily "var(--font-serif)"
78
+ fontSize "1.35rem"
79
+ fontWeight "500"
80
+ marginBottom "0.3rem"
81
+ }
82
+ }
83
+ div "Book a free consultation with a Meridian advisor." {
84
+ style color="rgba(244,241,233,0.75)" fontSize="0.95rem"
85
+ }
86
+ }
87
+ a href="/contact/" "Book a consultation" {
88
+ style {
89
+ display inline-block
90
+ backgroundColor "var(--color-accent)"
91
+ color "var(--color-ink-deep)"
92
+ padding "0.85rem 1.75rem"
93
+ fontFamily "var(--font-sans)"
94
+ fontSize "0.76rem"
95
+ fontWeight "600"
96
+ textTransform uppercase
97
+ letterSpacing "0.14em"
98
+ textDecoration none
99
+ whiteSpace nowrap
100
+ transition "background-color 0.15s"
101
+ :hover backgroundColor="#b0904c"
102
+ }
103
+ }
104
+ }
105
+ }
106
+ }
@@ -0,0 +1,94 @@
1
+ /- kdl-version 2
2
+ $schema "./project.schema.json"
3
+ project "Meridian Advisory"
4
+
5
+ url "https://example.com"
6
+
7
+ defaults layout="./layouts/base.jxn" lang=en
8
+
9
+ $head {
10
+ meta name=viewport content="width=device-width, initial-scale=1"
11
+ meta name=description content="Meridian Advisory is a boutique CPA and advisory firm for founders and growing companies — tax, assurance, and fractional CFO counsel, published as a quarterly of practical financial thinking."
12
+ link rel=icon href="/favicon.svg"
13
+ link rel=preconnect href="https://fonts.googleapis.com"
14
+ link rel=preconnect href="https://fonts.gstatic.com" crossorigin=""
15
+ link rel=stylesheet href="https://fonts.googleapis.com/css2?family=Spectral:ital,wght@0,300;0,400;0,500;0,600;0,700;0,800;1,400;1,500&family=Archivo:wght@400;500;600;700&display=swap"
16
+ }
17
+
18
+ $media {
19
+ -- "1200px"
20
+ --lg "(max-width: 1024px)"
21
+ --md "(max-width: 768px)"
22
+ --sm "(max-width: 640px)"
23
+ }
24
+
25
+ style {
26
+ --color-ink "#161a2c"
27
+ --color-ink-deep "#0d101d"
28
+ --color-navy "#1d2748"
29
+ --color-paper "#f4f1e9"
30
+ --color-paper-2 "#ece7da"
31
+ --color-surface "#fbf9f3"
32
+ --color-accent "#9a7b3c"
33
+ --color-accent-deep "#7c6230"
34
+ --color-muted "#605e55"
35
+ --color-rule "#161a2c"
36
+ --color-hairline "#d5cdba"
37
+ --color-primary "#161a2c"
38
+ --color-primary-hover "#242c4a"
39
+ --color-bg-dark "#0d101d"
40
+ --color-bg-cream "#ece7da"
41
+ --color-bg-white "#fbf9f3"
42
+ --color-text-primary "#161a2c"
43
+ --color-text-white "#f4f1e9"
44
+ --color-text-muted "#605e55"
45
+ --color-border "#d5cdba"
46
+ --font-serif "'Spectral', Georgia, 'Times New Roman', serif"
47
+ --font-sans "'Archivo', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif"
48
+ --font-heading "'Spectral', Georgia, 'Times New Roman', serif"
49
+ --max-width "1180px"
50
+ --max-width-narrow "720px"
51
+ --measure "660px"
52
+ --radius "0"
53
+ margin "0"
54
+ padding "0"
55
+ fontFamily "var(--font-sans)"
56
+ fontSize "17px"
57
+ lineHeight "1.6"
58
+ color "var(--color-ink)"
59
+ backgroundColor "var(--color-paper)"
60
+ }
61
+
62
+ images {
63
+ optimize #true
64
+ widths 320 640 960 1280 1920
65
+ formats webp avif
66
+ quality webp=80 avif=65 jpeg=80 png=80
67
+ sizes "(max-width: 768px) 100vw, 50vw"
68
+ lazyLoad #true
69
+ }
70
+
71
+ content {
72
+ insights {
73
+ source "./content/insights/"
74
+ format Markdown
75
+ schema {
76
+ type object
77
+ properties {
78
+ title type=string
79
+ excerpt type=string
80
+ date type=string
81
+ author type=string
82
+ category type=string
83
+ order type=number
84
+ }
85
+ required title excerpt date
86
+ }
87
+ }
88
+ }
89
+
90
+ build outDir="./dist" format=directory trailingSlash=always
91
+
92
+ extensions {
93
+ - "@jxsuite/parser"
94
+ }
@@ -0,0 +1,165 @@
1
+ /- kdl-version 2
2
+
3
+ re-agent-band {
4
+ state {
5
+ eyebrow "Your north shore team"
6
+ heading ""
7
+ text ""
8
+ phone "(555) 204-7788"
9
+ cta "Book a call"
10
+ ctaHref "/contact/"
11
+ cta2 "Meet the team"
12
+ cta2Href "/about/"
13
+ img1 type=string format=image default="/images/agent-1.jpg"
14
+ img2 type=string format=image default="/images/agent-2.jpg"
15
+ img3 type=string format=image default="/images/agent-3.jpg"
16
+ }
17
+ style display=block padding="clamp(2.5rem, 6vw, 4rem) 1.5rem"
18
+ div {
19
+ style {
20
+ maxWidth "var(--max-width)"
21
+ margin "0 auto"
22
+ position relative
23
+ overflow hidden
24
+ borderRadius "var(--radius-lg)"
25
+ background "radial-gradient(ellipse 60% 90% at 8% 0%, rgba(20,184,166,0.28), transparent 60%), radial-gradient(ellipse 50% 80% at 100% 100%, rgba(13,148,136,0.22), transparent 60%), var(--color-bg-dark)"
26
+ border "1px solid var(--color-bg-ink-soft)"
27
+ padding "clamp(2rem, 4vw, 3.25rem)"
28
+ display grid
29
+ gridTemplateColumns "auto 1fr"
30
+ gap "clamp(1.5rem, 4vw, 3.5rem)"
31
+ alignItems center
32
+ @--md gridTemplateColumns="1fr" gap="1.75rem"
33
+ }
34
+ div {
35
+ style display=flex flexDirection=column gap="1rem"
36
+ div {
37
+ style display=flex alignItems=center
38
+ img src="${state.img1}" alt="Northshore Realty agent" loading=lazy width="72" height="72" {
39
+ style {
40
+ width "4.5rem"
41
+ height "4.5rem"
42
+ borderRadius "999px"
43
+ objectFit cover
44
+ border "3px solid var(--color-bg-dark)"
45
+ boxShadow "0 6px 18px rgba(0,0,0,0.4)"
46
+ }
47
+ }
48
+ img src="${state.img2}" alt="Northshore Realty agent" loading=lazy width="72" height="72" {
49
+ style {
50
+ width "4.5rem"
51
+ height "4.5rem"
52
+ borderRadius "999px"
53
+ objectFit cover
54
+ border "3px solid var(--color-bg-dark)"
55
+ marginLeft "-1.1rem"
56
+ boxShadow "0 6px 18px rgba(0,0,0,0.4)"
57
+ }
58
+ }
59
+ img src="${state.img3}" alt="Northshore Realty agent" loading=lazy width="72" height="72" {
60
+ style {
61
+ width "4.5rem"
62
+ height "4.5rem"
63
+ borderRadius "999px"
64
+ objectFit cover
65
+ border "3px solid var(--color-bg-dark)"
66
+ marginLeft "-1.1rem"
67
+ boxShadow "0 6px 18px rgba(0,0,0,0.4)"
68
+ }
69
+ }
70
+ }
71
+ div {
72
+ style {
73
+ display inline-flex
74
+ alignItems center
75
+ gap "0.4rem"
76
+ color "var(--color-accent-bright)"
77
+ fontWeight "700"
78
+ fontSize "0.9rem"
79
+ }
80
+ span ★★★★★
81
+ span "4.9 · 220 reviews" {
82
+ style color="rgba(255,255,255,0.6)" fontWeight="600"
83
+ }
84
+ }
85
+ }
86
+ div {
87
+ p "${state.eyebrow}" {
88
+ style {
89
+ textTransform uppercase
90
+ letterSpacing "0.16em"
91
+ fontSize "0.74rem"
92
+ fontWeight "700"
93
+ color "var(--color-accent-bright)"
94
+ margin "0 0 0.8rem"
95
+ }
96
+ }
97
+ h2 "${state.heading}" {
98
+ style {
99
+ fontFamily "var(--font-display)"
100
+ fontSize "clamp(1.75rem, 3.4vw, 2.6rem)"
101
+ fontWeight "500"
102
+ lineHeight "1.1"
103
+ letterSpacing "-0.015em"
104
+ margin "0 0 0.9rem"
105
+ color "var(--color-text-white)"
106
+ }
107
+ }
108
+ p "${state.text}" {
109
+ style {
110
+ fontSize "1.05rem"
111
+ lineHeight "1.65"
112
+ color "rgba(255,255,255,0.72)"
113
+ margin "0 0 1.75rem"
114
+ maxWidth "48ch"
115
+ }
116
+ }
117
+ div {
118
+ style display=flex alignItems=center gap="1.25rem" flexWrap=wrap
119
+ a href="${state.ctaHref}" {
120
+ style {
121
+ display inline-flex
122
+ alignItems center
123
+ gap "0.5rem"
124
+ backgroundColor "var(--color-accent-bright)"
125
+ color "var(--color-ink)"
126
+ padding "0.85rem 1.6rem"
127
+ borderRadius "999px"
128
+ fontSize "1rem"
129
+ fontWeight "700"
130
+ textDecoration none
131
+ transition "transform 0.15s, box-shadow 0.15s"
132
+ boxShadow "0 12px 30px -12px rgba(20,184,166,0.7)"
133
+ :hover {
134
+ transform "translateY(-2px)"
135
+ boxShadow "0 18px 40px -12px rgba(20,184,166,0.8)"
136
+ }
137
+ }
138
+ span "${state.cta}"
139
+ span →
140
+ }
141
+ a href=tel:+15552047788 {
142
+ style display=inline-flex flexDirection=column textDecoration=none
143
+ span "Call us" {
144
+ style {
145
+ fontSize "0.72rem"
146
+ textTransform uppercase
147
+ letterSpacing "0.12em"
148
+ color "rgba(255,255,255,0.5)"
149
+ fontWeight "700"
150
+ }
151
+ }
152
+ span "${state.phone}" {
153
+ style {
154
+ fontSize "1.2rem"
155
+ fontWeight "800"
156
+ color "var(--color-text-white)"
157
+ fontVariantNumeric tabular-nums
158
+ letterSpacing "-0.01em"
159
+ }
160
+ }
161
+ }
162
+ }
163
+ }
164
+ }
165
+ }
@@ -0,0 +1,78 @@
1
+ /- kdl-version 2
2
+
3
+ re-agent-card {
4
+ state {
5
+ name ""
6
+ role ""
7
+ phone ""
8
+ image type=string format=image default=""
9
+ }
10
+ style {
11
+ display block
12
+ backgroundColor "var(--color-bg-white)"
13
+ border "1px solid var(--color-border)"
14
+ borderRadius "var(--radius)"
15
+ overflow hidden
16
+ transition "transform 0.2s, box-shadow 0.2s"
17
+ :hover transform="translateY(-3px)" boxShadow="var(--shadow-card)"
18
+ ":hover img" transform="scale(1.04)"
19
+ }
20
+ div {
21
+ style {
22
+ position relative
23
+ overflow hidden
24
+ aspectRatio "1 / 1"
25
+ backgroundColor "var(--color-bg-tint)"
26
+ }
27
+ img src="${state.image}" alt="${state.name}" loading=lazy {
28
+ style {
29
+ position absolute
30
+ inset "0"
31
+ width "100%"
32
+ height "100%"
33
+ objectFit cover
34
+ display block
35
+ transition "transform 0.5s cubic-bezier(0.22, 1, 0.36, 1)"
36
+ }
37
+ }
38
+ }
39
+ div {
40
+ style padding="1.25rem"
41
+ p "${state.role}" {
42
+ style {
43
+ margin "0 0 0.5rem"
44
+ color "var(--color-primary)"
45
+ fontSize "0.72rem"
46
+ fontWeight "700"
47
+ textTransform uppercase
48
+ letterSpacing "0.1em"
49
+ }
50
+ }
51
+ h3 "${state.name}" {
52
+ style {
53
+ fontFamily "var(--font-heading)"
54
+ fontSize "1.2rem"
55
+ fontWeight "700"
56
+ letterSpacing "-0.01em"
57
+ margin "0 0 0.6rem"
58
+ }
59
+ }
60
+ a href="tel:${state.phone}" {
61
+ style {
62
+ display inline-flex
63
+ alignItems center
64
+ gap "0.4rem"
65
+ color "var(--color-text-secondary)"
66
+ fontSize "0.92rem"
67
+ fontWeight "600"
68
+ textDecoration none
69
+ fontVariantNumeric tabular-nums
70
+ :hover color="var(--color-primary)"
71
+ }
72
+ span ☎ {
73
+ style fontSize="0.85rem"
74
+ }
75
+ span "${state.phone}"
76
+ }
77
+ }
78
+ }
@@ -0,0 +1,119 @@
1
+ /- kdl-version 2
2
+
3
+ re-contact-form {
4
+ state note="This is a demo form. Wire it to your CRM or email in pages/contact.md."
5
+ style display=block
6
+ form action="#" method=post {
7
+ style display=grid gap="0.9rem" marginTop="1.5rem"
8
+ input type=text name=name placeholder="Your name" required="true" aria-label="Your name" {
9
+ style {
10
+ width "100%"
11
+ padding "0.8rem 0.95rem"
12
+ border "1px solid var(--color-border-strong)"
13
+ borderRadius "var(--radius-sm)"
14
+ fontSize "1rem"
15
+ fontFamily inherit
16
+ backgroundColor "var(--color-bg-white)"
17
+ outline none
18
+ transition "border-color 0.15s, box-shadow 0.15s"
19
+ :focus {
20
+ borderColor "var(--color-primary)"
21
+ boxShadow "0 0 0 3px var(--color-accent-soft)"
22
+ }
23
+ }
24
+ }
25
+ input type=email name=email placeholder="Email address" required="true" aria-label="Email address" {
26
+ style {
27
+ width "100%"
28
+ padding "0.8rem 0.95rem"
29
+ border "1px solid var(--color-border-strong)"
30
+ borderRadius "var(--radius-sm)"
31
+ fontSize "1rem"
32
+ fontFamily inherit
33
+ backgroundColor "var(--color-bg-white)"
34
+ outline none
35
+ transition "border-color 0.15s, box-shadow 0.15s"
36
+ :focus {
37
+ borderColor "var(--color-primary)"
38
+ boxShadow "0 0 0 3px var(--color-accent-soft)"
39
+ }
40
+ }
41
+ }
42
+ div {
43
+ style display=grid gridTemplateColumns="1fr 1fr" gap="0.9rem" {
44
+ @--sm gridTemplateColumns="1fr"
45
+ }
46
+ input type=text name=intent placeholder="Buying or selling?" aria-label="Buying or selling" {
47
+ style {
48
+ width "100%"
49
+ padding "0.8rem 0.95rem"
50
+ border "1px solid var(--color-border-strong)"
51
+ borderRadius "var(--radius-sm)"
52
+ fontSize "1rem"
53
+ fontFamily inherit
54
+ backgroundColor "var(--color-bg-white)"
55
+ outline none
56
+ transition "border-color 0.15s, box-shadow 0.15s"
57
+ :focus {
58
+ borderColor "var(--color-primary)"
59
+ boxShadow "0 0 0 3px var(--color-accent-soft)"
60
+ }
61
+ }
62
+ }
63
+ input type=text name=area placeholder="Preferred area" aria-label="Preferred area" {
64
+ style {
65
+ width "100%"
66
+ padding "0.8rem 0.95rem"
67
+ border "1px solid var(--color-border-strong)"
68
+ borderRadius "var(--radius-sm)"
69
+ fontSize "1rem"
70
+ fontFamily inherit
71
+ backgroundColor "var(--color-bg-white)"
72
+ outline none
73
+ transition "border-color 0.15s, box-shadow 0.15s"
74
+ :focus {
75
+ borderColor "var(--color-primary)"
76
+ boxShadow "0 0 0 3px var(--color-accent-soft)"
77
+ }
78
+ }
79
+ }
80
+ }
81
+ textarea name=notes rows="4" placeholder="What are you looking for? Budget, bedrooms, timing…" aria-label=Notes {
82
+ style {
83
+ width "100%"
84
+ padding "0.8rem 0.95rem"
85
+ border "1px solid var(--color-border-strong)"
86
+ borderRadius "var(--radius-sm)"
87
+ fontSize "1rem"
88
+ fontFamily inherit
89
+ backgroundColor "var(--color-bg-white)"
90
+ outline none
91
+ resize vertical
92
+ transition "border-color 0.15s, box-shadow 0.15s"
93
+ :focus {
94
+ borderColor "var(--color-primary)"
95
+ boxShadow "0 0 0 3px var(--color-accent-soft)"
96
+ }
97
+ }
98
+ }
99
+ button type=submit "Request a call" {
100
+ style {
101
+ backgroundColor "var(--color-primary)"
102
+ color "var(--color-text-white)"
103
+ padding "0.9rem 1.6rem"
104
+ border none
105
+ borderRadius "999px"
106
+ fontSize "1rem"
107
+ fontFamily inherit
108
+ fontWeight "700"
109
+ cursor pointer
110
+ justifySelf start
111
+ transition "background-color 0.15s, transform 0.15s"
112
+ :hover backgroundColor="var(--color-primary-hover)" transform="translateY(-1px)"
113
+ }
114
+ }
115
+ }
116
+ p "${state.note}" {
117
+ style fontSize="0.85rem" color="var(--color-text-muted)" margin="1rem 0 0"
118
+ }
119
+ }
@@ -0,0 +1,98 @@
1
+ /- kdl-version 2
2
+
3
+ re-cta {
4
+ state {
5
+ heading ""
6
+ text ""
7
+ cta "Contact an Agent"
8
+ ctaHref "/contact/"
9
+ cta2 ""
10
+ cta2Href "/listings/"
11
+ }
12
+ style {
13
+ display block
14
+ position relative
15
+ overflow hidden
16
+ background "radial-gradient(ellipse 55% 80% at 50% 120%, rgba(20,184,166,0.22), transparent 65%), var(--color-bg-dark)"
17
+ color "var(--color-text-white)"
18
+ padding "clamp(3.5rem, 8vw, 5.5rem) 1.5rem"
19
+ textAlign center
20
+ }
21
+ div {
22
+ style maxWidth="var(--max-width-narrow)" margin="0 auto" position=relative zIndex="2"
23
+ p "Northshore Realty" {
24
+ style {
25
+ textTransform uppercase
26
+ letterSpacing "0.18em"
27
+ fontSize "0.74rem"
28
+ fontWeight "700"
29
+ color "var(--color-accent-bright)"
30
+ margin "0 0 1rem"
31
+ }
32
+ }
33
+ h2 "${state.heading}" {
34
+ style {
35
+ fontFamily "var(--font-display)"
36
+ fontSize "clamp(2rem, 4.4vw, 3rem)"
37
+ fontWeight "500"
38
+ lineHeight "1.1"
39
+ letterSpacing "-0.015em"
40
+ margin "0 0 1rem"
41
+ color "var(--color-text-white)"
42
+ }
43
+ }
44
+ p "${state.text}" {
45
+ style {
46
+ fontSize "1.12rem"
47
+ lineHeight "1.65"
48
+ color "rgba(255,255,255,0.74)"
49
+ margin "0 auto 2.25rem"
50
+ maxWidth "50ch"
51
+ }
52
+ }
53
+ div {
54
+ style display=flex gap="0.75rem" justifyContent=center flexWrap=wrap
55
+ a href="${state.ctaHref}" {
56
+ style {
57
+ display inline-flex
58
+ alignItems center
59
+ gap "0.5rem"
60
+ backgroundColor "var(--color-accent-bright)"
61
+ color "var(--color-ink)"
62
+ padding "0.9rem 2rem"
63
+ borderRadius "999px"
64
+ fontSize "1.02rem"
65
+ fontWeight "700"
66
+ textDecoration none
67
+ transition "transform 0.15s, box-shadow 0.15s"
68
+ boxShadow "0 14px 34px -14px rgba(20,184,166,0.8)"
69
+ :hover {
70
+ transform "translateY(-2px)"
71
+ boxShadow "0 20px 44px -14px rgba(20,184,166,0.9)"
72
+ }
73
+ }
74
+ span "${state.cta}"
75
+ span →
76
+ }
77
+ a href="${state.cta2Href}" "${state.cta2}" {
78
+ style {
79
+ display "${state.cta2 ? 'inline-flex' : 'none'}"
80
+ alignItems center
81
+ border "1px solid rgba(255,255,255,0.22)"
82
+ backgroundColor "rgba(255,255,255,0.04)"
83
+ color "var(--color-text-white)"
84
+ padding "0.9rem 2rem"
85
+ borderRadius "999px"
86
+ fontSize "1.02rem"
87
+ fontWeight "600"
88
+ textDecoration none
89
+ transition "background-color 0.15s, border-color 0.15s"
90
+ :hover {
91
+ backgroundColor "rgba(255,255,255,0.09)"
92
+ borderColor "rgba(255,255,255,0.4)"
93
+ }
94
+ }
95
+ }
96
+ }
97
+ }
98
+ }
@@ -0,0 +1,18 @@
1
+ /- kdl-version 2
2
+
3
+ re-detail-row {
4
+ state label="" value=""
5
+ style {
6
+ display flex
7
+ justifyContent space-between
8
+ gap "1rem"
9
+ padding "0.55rem 0"
10
+ borderTop "1px solid rgba(255, 255, 255, 0.15)"
11
+ }
12
+ span "${state.label}" {
13
+ style fontWeight="600"
14
+ }
15
+ span "${state.value}" {
16
+ style opacity="0.8"
17
+ }
18
+ }