@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,452 @@
1
+ /- kdl-version 2
2
+ $paths contentType=listings param=slug field=slug
3
+ $head {
4
+ meta name=description content="${state.listing.data.Title} in ${state.listing.data.city} — ${state.listing.data.beds} bed, ${state.listing.data.baths} bath, ${state.listing.data.sqft} sqft. Listed by Northshore Realty."
5
+ }
6
+
7
+ $element .title="${state.listing.data.Title} — Northshore Realty" {
8
+ state {
9
+ listing {
10
+ $prototype ContentEntry
11
+ contentType listings
12
+ field slug
13
+ id (ref)"#/$params/slug"
14
+ $src "@jxsuite/parser/ContentEntry.class.json"
15
+ }
16
+ }
17
+ div {
18
+ style {
19
+ maxWidth "var(--max-width)"
20
+ margin "0 auto"
21
+ padding "1.75rem 1.5rem clamp(3rem, 6vw, 4.5rem)"
22
+ }
23
+ a href="/listings/" "← All listings" {
24
+ style {
25
+ display inline-flex
26
+ alignItems center
27
+ gap "0.5rem"
28
+ color "var(--color-text-muted)"
29
+ textDecoration none
30
+ fontWeight "600"
31
+ fontSize "0.9rem"
32
+ marginBottom "1.5rem"
33
+ :hover color="var(--color-primary)"
34
+ }
35
+ }
36
+ header {
37
+ style {
38
+ display flex
39
+ flexWrap wrap
40
+ alignItems flex-end
41
+ justifyContent space-between
42
+ gap "1rem"
43
+ marginBottom "1.75rem"
44
+ }
45
+ div {
46
+ div {
47
+ style display=flex alignItems=center gap="0.75rem" marginBottom="0.75rem"
48
+ span {
49
+ style {
50
+ display inline-flex
51
+ alignItems center
52
+ gap "0.4rem"
53
+ backgroundColor "var(--color-teal-tint)"
54
+ color "var(--color-primary)"
55
+ fontWeight "700"
56
+ fontSize "0.74rem"
57
+ letterSpacing "0.04em"
58
+ textTransform uppercase
59
+ padding "0.3rem 0.7rem"
60
+ borderRadius "999px"
61
+ border "1px solid var(--color-accent-soft)"
62
+ }
63
+ span {
64
+ style {
65
+ width "0.4rem"
66
+ height "0.4rem"
67
+ borderRadius "999px"
68
+ backgroundColor "var(--color-accent-bright)"
69
+ }
70
+ }
71
+ span "${state.listing.data.status}"
72
+ }
73
+ span {
74
+ style {
75
+ display inline-flex
76
+ alignItems center
77
+ gap "0.35rem"
78
+ color "var(--color-text-muted)"
79
+ fontWeight "600"
80
+ fontSize "0.92rem"
81
+ }
82
+ span 📍
83
+ span "${state.listing.data.city}"
84
+ }
85
+ }
86
+ h1 "${state.listing.data.Title}" {
87
+ style {
88
+ fontFamily "var(--font-display)"
89
+ fontSize "clamp(2rem, 4vw, 3rem)"
90
+ fontWeight "500"
91
+ letterSpacing "-0.02em"
92
+ lineHeight "1.05"
93
+ margin "0"
94
+ color "var(--color-text-primary)"
95
+ }
96
+ }
97
+ }
98
+ div {
99
+ style textAlign=right
100
+ div "$${Number(state.listing.data.price).toLocaleString('en-US')}" {
101
+ style {
102
+ fontFamily "var(--font-heading)"
103
+ fontSize "clamp(1.75rem, 3.5vw, 2.5rem)"
104
+ fontWeight "800"
105
+ letterSpacing "-0.02em"
106
+ color "var(--color-text-primary)"
107
+ whiteSpace nowrap
108
+ fontVariantNumeric tabular-nums
109
+ }
110
+ }
111
+ div "$${Math.round(Number(state.listing.data.price)/Number(state.listing.data.sqft)).toLocaleString('en-US')} / sqft" {
112
+ style {
113
+ fontSize "0.85rem"
114
+ color "var(--color-text-muted)"
115
+ fontWeight "600"
116
+ fontVariantNumeric tabular-nums
117
+ }
118
+ }
119
+ }
120
+ }
121
+ div {
122
+ style {
123
+ display grid
124
+ gridTemplateColumns "2fr 1fr"
125
+ gridTemplateRows "repeat(2, 1fr)"
126
+ gap "0.75rem"
127
+ marginBottom "2.5rem"
128
+ @--sm gridTemplateColumns="1fr" gridTemplateRows=auto
129
+ }
130
+ img src="${state.listing.data.image}" alt="${state.listing.data.Title}" loading=eager {
131
+ style {
132
+ width "100%"
133
+ height "100%"
134
+ gridRow "span 2"
135
+ objectFit cover
136
+ borderRadius "var(--radius)"
137
+ minHeight "300px"
138
+ @--sm gridRow=auto minHeight="230px"
139
+ }
140
+ }
141
+ img src="/images/interior-1.jpg" alt="Living space at ${state.listing.data.Title}" loading=lazy {
142
+ style {
143
+ width "100%"
144
+ height "100%"
145
+ objectFit cover
146
+ borderRadius "var(--radius)"
147
+ minHeight "145px"
148
+ }
149
+ }
150
+ img src="/images/interior-2.jpg" alt="Kitchen at ${state.listing.data.Title}" loading=lazy {
151
+ style {
152
+ width "100%"
153
+ height "100%"
154
+ objectFit cover
155
+ borderRadius "var(--radius)"
156
+ minHeight "145px"
157
+ }
158
+ }
159
+ }
160
+ div {
161
+ style {
162
+ display grid
163
+ gridTemplateColumns "1.6fr 1fr"
164
+ gap "clamp(2rem, 4vw, 3rem)"
165
+ alignItems start
166
+ @--md gridTemplateColumns="1fr"
167
+ }
168
+ div {
169
+ div {
170
+ style {
171
+ display grid
172
+ gridTemplateColumns "repeat(3, 1fr)"
173
+ gap "0"
174
+ border "1px solid var(--color-border)"
175
+ borderRadius "var(--radius)"
176
+ overflow hidden
177
+ marginBottom "2.5rem"
178
+ @--sm gridTemplateColumns="repeat(2, 1fr)"
179
+ }
180
+ div {
181
+ style {
182
+ padding "1.25rem"
183
+ borderRight "1px solid var(--color-border)"
184
+ borderBottom "1px solid var(--color-border)"
185
+ }
186
+ div "${state.listing.data.beds}" {
187
+ style {
188
+ fontFamily "var(--font-heading)"
189
+ fontSize "1.4rem"
190
+ fontWeight "800"
191
+ color "var(--color-text-primary)"
192
+ fontVariantNumeric tabular-nums
193
+ }
194
+ }
195
+ div Bedrooms {
196
+ style {
197
+ fontSize "0.8rem"
198
+ color "var(--color-text-muted)"
199
+ fontWeight "600"
200
+ textTransform uppercase
201
+ letterSpacing "0.05em"
202
+ marginTop "0.2rem"
203
+ }
204
+ }
205
+ }
206
+ div {
207
+ style {
208
+ padding "1.25rem"
209
+ borderRight "1px solid var(--color-border)"
210
+ borderBottom "1px solid var(--color-border)"
211
+ }
212
+ div "${state.listing.data.baths}" {
213
+ style {
214
+ fontFamily "var(--font-heading)"
215
+ fontSize "1.4rem"
216
+ fontWeight "800"
217
+ color "var(--color-text-primary)"
218
+ fontVariantNumeric tabular-nums
219
+ }
220
+ }
221
+ div Bathrooms {
222
+ style {
223
+ fontSize "0.8rem"
224
+ color "var(--color-text-muted)"
225
+ fontWeight "600"
226
+ textTransform uppercase
227
+ letterSpacing "0.05em"
228
+ marginTop "0.2rem"
229
+ }
230
+ }
231
+ }
232
+ div {
233
+ style padding="1.25rem" borderBottom="1px solid var(--color-border)"
234
+ div "${Number(state.listing.data.sqft).toLocaleString('en-US')}" {
235
+ style {
236
+ fontFamily "var(--font-heading)"
237
+ fontSize "1.4rem"
238
+ fontWeight "800"
239
+ color "var(--color-text-primary)"
240
+ fontVariantNumeric tabular-nums
241
+ }
242
+ }
243
+ div "Sq ft" {
244
+ style {
245
+ fontSize "0.8rem"
246
+ color "var(--color-text-muted)"
247
+ fontWeight "600"
248
+ textTransform uppercase
249
+ letterSpacing "0.05em"
250
+ marginTop "0.2rem"
251
+ }
252
+ }
253
+ }
254
+ div {
255
+ style padding="1.25rem" borderRight="1px solid var(--color-border)"
256
+ div "$${Math.round(Number(state.listing.data.price)/Number(state.listing.data.sqft)).toLocaleString('en-US')}" {
257
+ style {
258
+ fontFamily "var(--font-heading)"
259
+ fontSize "1.4rem"
260
+ fontWeight "800"
261
+ color "var(--color-primary)"
262
+ fontVariantNumeric tabular-nums
263
+ }
264
+ }
265
+ div "Per sq ft" {
266
+ style {
267
+ fontSize "0.8rem"
268
+ color "var(--color-text-muted)"
269
+ fontWeight "600"
270
+ textTransform uppercase
271
+ letterSpacing "0.05em"
272
+ marginTop "0.2rem"
273
+ }
274
+ }
275
+ }
276
+ div {
277
+ style padding="1.25rem" borderRight="1px solid var(--color-border)"
278
+ div Single-family {
279
+ style {
280
+ fontFamily "var(--font-heading)"
281
+ fontSize "1.4rem"
282
+ fontWeight "800"
283
+ color "var(--color-text-primary)"
284
+ }
285
+ }
286
+ div "Property type" {
287
+ style {
288
+ fontSize "0.8rem"
289
+ color "var(--color-text-muted)"
290
+ fontWeight "600"
291
+ textTransform uppercase
292
+ letterSpacing "0.05em"
293
+ marginTop "0.2rem"
294
+ }
295
+ }
296
+ }
297
+ div {
298
+ style padding="1.25rem"
299
+ div "${state.listing.data.city}" {
300
+ style {
301
+ fontFamily "var(--font-heading)"
302
+ fontSize "1.4rem"
303
+ fontWeight "800"
304
+ color "var(--color-text-primary)"
305
+ }
306
+ }
307
+ div Location {
308
+ style {
309
+ fontSize "0.8rem"
310
+ color "var(--color-text-muted)"
311
+ fontWeight "600"
312
+ textTransform uppercase
313
+ letterSpacing "0.05em"
314
+ marginTop "0.2rem"
315
+ }
316
+ }
317
+ }
318
+ }
319
+ h2 "About this home" {
320
+ style {
321
+ fontFamily "var(--font-display)"
322
+ fontSize "1.6rem"
323
+ fontWeight "500"
324
+ letterSpacing "-0.01em"
325
+ margin "0 0 1rem"
326
+ }
327
+ }
328
+ p "Set in the heart of ${state.listing.data.city}, ${state.listing.data.Title} offers ${state.listing.data.beds} bedrooms and ${state.listing.data.baths} bathrooms across ${Number(state.listing.data.sqft).toLocaleString('en-US')} thoughtfully finished square feet. Sunlit living spaces, an updated kitchen, and easy access to schools, parks, and the waterfront make this a home you can move right into." {
329
+ style {
330
+ fontSize "1.08rem"
331
+ lineHeight "1.8"
332
+ color "var(--color-text-secondary)"
333
+ margin "0 0 1rem"
334
+ }
335
+ }
336
+ p "Want to see it in person? Our team can arrange a private showing this week." {
337
+ style {
338
+ fontSize "1.08rem"
339
+ lineHeight "1.8"
340
+ color "var(--color-text-muted)"
341
+ margin "0"
342
+ }
343
+ }
344
+ }
345
+ aside {
346
+ style {
347
+ position sticky
348
+ top "5rem"
349
+ backgroundColor "var(--color-bg-white)"
350
+ border "1px solid var(--color-border)"
351
+ borderRadius "var(--radius-lg)"
352
+ boxShadow "var(--shadow-card)"
353
+ padding "1.5rem"
354
+ @--md position=static
355
+ }
356
+ div "$${Number(state.listing.data.price).toLocaleString('en-US')}" {
357
+ style {
358
+ fontFamily "var(--font-heading)"
359
+ fontSize "1.75rem"
360
+ fontWeight "800"
361
+ letterSpacing "-0.02em"
362
+ color "var(--color-text-primary)"
363
+ fontVariantNumeric tabular-nums
364
+ }
365
+ }
366
+ div {
367
+ style {
368
+ display flex
369
+ gap "0.75rem"
370
+ margin "0.75rem 0 1.25rem"
371
+ fontSize "0.9rem"
372
+ fontWeight "600"
373
+ color "var(--color-text-secondary)"
374
+ fontVariantNumeric tabular-nums
375
+ }
376
+ span "${state.listing.data.beds} bd"
377
+ span · {
378
+ style color="var(--color-border-strong)"
379
+ }
380
+ span "${state.listing.data.baths} ba"
381
+ span · {
382
+ style color="var(--color-border-strong)"
383
+ }
384
+ span "${Number(state.listing.data.sqft).toLocaleString('en-US')} sqft"
385
+ }
386
+ a href="/contact/" "Book a private showing" {
387
+ style {
388
+ display block
389
+ textAlign center
390
+ backgroundColor "var(--color-primary)"
391
+ color "var(--color-text-white)"
392
+ padding "0.85rem 1.25rem"
393
+ borderRadius "999px"
394
+ fontWeight "700"
395
+ fontSize "0.98rem"
396
+ textDecoration none
397
+ transition "background-color 0.15s"
398
+ :hover backgroundColor="var(--color-primary-hover)"
399
+ }
400
+ }
401
+ div {
402
+ style {
403
+ display flex
404
+ alignItems center
405
+ gap "0.85rem"
406
+ marginTop "1.5rem"
407
+ paddingTop "1.5rem"
408
+ borderTop "1px solid var(--color-border)"
409
+ }
410
+ img src="/images/agent-1.jpg" alt="Priya Anand" loading=lazy width="56" height="56" {
411
+ style width="3.25rem" height="3.25rem" borderRadius="999px" objectFit=cover
412
+ }
413
+ div {
414
+ div "Priya Anand" {
415
+ style fontWeight="700" fontSize="0.95rem"
416
+ }
417
+ div "Principal Broker" {
418
+ style fontSize="0.82rem" color="var(--color-text-muted)"
419
+ }
420
+ a href=tel:+15552047781 "(555) 204-7781" {
421
+ style {
422
+ fontSize "0.85rem"
423
+ color "var(--color-primary)"
424
+ fontWeight "600"
425
+ textDecoration none
426
+ fontVariantNumeric tabular-nums
427
+ }
428
+ }
429
+ }
430
+ }
431
+ div "Listed by Northshore Realty · Equal Housing Opportunity" {
432
+ style {
433
+ marginTop "1.25rem"
434
+ fontSize "0.78rem"
435
+ color "var(--color-text-muted)"
436
+ lineHeight "1.5"
437
+ }
438
+ }
439
+ }
440
+ }
441
+ }
442
+ re-cta {
443
+ $props {
444
+ heading "Book a private showing"
445
+ text "Reach out and we'll set up a walkthrough of this home at a time that works for you."
446
+ cta "Contact an agent"
447
+ ctaHref "/contact/"
448
+ cta2 "Back to listings"
449
+ cta2Href "/listings/"
450
+ }
451
+ }
452
+ }
@@ -0,0 +1,103 @@
1
+ /- kdl-version 2
2
+ $schema "./project.schema.json"
3
+ project "Northshore Realty"
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="Northshore Realty is the north shore's property index — search live listings by neighborhood, price, and bedrooms, then work with agents who actually live here."
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=Plus+Jakarta+Sans:wght@400;500;600;700;800&family=Spectral:ital,wght@0,400;0,500;0,600;1,400;1,500&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-primary "#0f766e"
27
+ --color-primary-hover "#115e59"
28
+ --color-accent "#0d9488"
29
+ --color-accent-bright "#14b8a6"
30
+ --color-accent-soft "#ccfbf1"
31
+ --color-teal-tint "#f0fdfa"
32
+ --color-ink "#0b1220"
33
+ --color-navy "#0f172a"
34
+ --color-bg-dark "#0b1220"
35
+ --color-bg-ink-soft "#152238"
36
+ --color-bg-cream "#f6f8fb"
37
+ --color-bg-tint "#eef2f7"
38
+ --color-bg-white "#ffffff"
39
+ --color-text-primary "#0f172a"
40
+ --color-text-secondary "#334155"
41
+ --color-text-muted "#64748b"
42
+ --color-text-white "#ffffff"
43
+ --color-border "#e4e9f0"
44
+ --color-border-strong "#cbd5e1"
45
+ --color-status-new "#0d9488"
46
+ --font-display "'Spectral', Georgia, 'Times New Roman', serif"
47
+ --font-heading "'Plus Jakarta Sans', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif"
48
+ --font-ui "'Plus Jakarta Sans', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif"
49
+ --font-body "'Plus Jakarta Sans', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif"
50
+ --max-width "1240px"
51
+ --max-width-narrow "760px"
52
+ --radius "0.75rem"
53
+ --radius-sm "0.5rem"
54
+ --radius-lg "1.25rem"
55
+ --shadow-card "0 1px 2px rgba(15,23,42,0.04), 0 10px 26px -14px rgba(15,23,42,0.18)"
56
+ --shadow-float "0 30px 70px -28px rgba(11,18,32,0.42)"
57
+ margin "0"
58
+ padding "0"
59
+ fontFamily "var(--font-body)"
60
+ fontSize "17px"
61
+ lineHeight "1.6"
62
+ color "var(--color-text-primary)"
63
+ backgroundColor "var(--color-bg-white)"
64
+ WebkitFontSmoothing antialiased
65
+ }
66
+
67
+ images {
68
+ optimize #true
69
+ widths 320 640 960 1280 1920
70
+ formats webp avif
71
+ quality webp=80 avif=65 jpeg=80 png=80
72
+ sizes "(max-width: 768px) 100vw, 50vw"
73
+ lazyLoad #true
74
+ }
75
+
76
+ content {
77
+ listings {
78
+ source "./content/listings.csv"
79
+ format Csv
80
+ schema {
81
+ type object
82
+ properties {
83
+ Title type=string
84
+ slug type=string
85
+ price type=number
86
+ beds type=number
87
+ baths type=number
88
+ sqft type=number
89
+ city type=string
90
+ image type=string format=image
91
+ status type=string
92
+ order type=number
93
+ }
94
+ required Title slug
95
+ }
96
+ }
97
+ }
98
+
99
+ build outDir="./dist" format=directory trailingSlash=always
100
+
101
+ extensions {
102
+ - "@jxsuite/parser"
103
+ }
@@ -0,0 +1,105 @@
1
+ /- kdl-version 2
2
+
3
+ bit-cta {
4
+ state {
5
+ eyebrow Reservations
6
+ heading ""
7
+ headingAccent ""
8
+ text ""
9
+ cta "Reserve a Table"
10
+ ctaHref "/contact/"
11
+ }
12
+ style {
13
+ display block
14
+ position relative
15
+ overflow hidden
16
+ backgroundColor "var(--color-espresso)"
17
+ color "var(--color-text-white)"
18
+ padding "clamp(3.5rem, 9vw, 6rem) 1.5rem"
19
+ textAlign center
20
+ }
21
+ div {
22
+ style {
23
+ position absolute
24
+ inset "0"
25
+ background "radial-gradient(ellipse 55% 70% at 50% 120%, rgba(189,90,52,0.34), transparent 65%)"
26
+ pointerEvents none
27
+ }
28
+ }
29
+ div {
30
+ style position=relative zIndex="10" maxWidth="var(--max-width-narrow)" margin="0 auto"
31
+ div {
32
+ style {
33
+ display "${state.eyebrow ? 'flex' : 'none'}"
34
+ alignItems center
35
+ justifyContent center
36
+ gap "0.85rem"
37
+ marginBottom "1.25rem"
38
+ }
39
+ span {
40
+ style width="2.25rem" height="1px" backgroundColor="var(--color-amber)"
41
+ }
42
+ p "${state.eyebrow}" {
43
+ style {
44
+ margin "0"
45
+ fontFamily "var(--font-body)"
46
+ textTransform uppercase
47
+ letterSpacing "0.24em"
48
+ fontSize "0.74rem"
49
+ fontWeight "700"
50
+ color "var(--color-amber)"
51
+ }
52
+ }
53
+ span {
54
+ style width="2.25rem" height="1px" backgroundColor="var(--color-amber)"
55
+ }
56
+ }
57
+ h2 {
58
+ style {
59
+ fontFamily "var(--font-heading)"
60
+ fontSize "clamp(2.1rem, 5vw, 3.25rem)"
61
+ fontWeight "700"
62
+ lineHeight "1.1"
63
+ letterSpacing "-0.02em"
64
+ margin "0 0 1.1rem"
65
+ color "var(--color-text-white)"
66
+ }
67
+ span "${state.heading}"
68
+ span " ${state.headingAccent}" {
69
+ style {
70
+ display "${state.headingAccent ? 'inline' : 'none'}"
71
+ fontStyle italic
72
+ fontWeight "500"
73
+ color "var(--color-amber)"
74
+ }
75
+ }
76
+ }
77
+ p "${state.text}" {
78
+ style {
79
+ fontFamily "var(--font-body)"
80
+ fontSize "1.12rem"
81
+ lineHeight "1.7"
82
+ opacity "0.82"
83
+ margin "0 auto 2rem"
84
+ maxWidth "50ch"
85
+ }
86
+ }
87
+ a href="${state.ctaHref}" "${state.cta}" {
88
+ style {
89
+ display inline-block
90
+ backgroundColor "var(--color-primary)"
91
+ color "var(--color-text-white)"
92
+ padding "0.95rem 2.4rem"
93
+ borderRadius "999px"
94
+ fontFamily "var(--font-body)"
95
+ fontSize "0.85rem"
96
+ fontWeight "700"
97
+ textTransform uppercase
98
+ letterSpacing "0.14em"
99
+ textDecoration none
100
+ transition "background-color 0.15s"
101
+ :hover backgroundColor="var(--color-primary-hover)"
102
+ }
103
+ }
104
+ }
105
+ }