@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,266 @@
1
+ /- kdl-version 2
2
+
3
+ $element .title="Plan your visit — Atrium" .description="Hours, admission, transport and access for Atrium, the city museum of art and history. Free entry, Tuesday to Sunday, 10:00 to 18:00." {
4
+ state {
5
+ tourPrice {
6
+ $expression {
7
+ operator call
8
+ target (ref)"window#/Intl/formatNumber"
9
+ value {
10
+ - 12
11
+ - #null
12
+ - style=currency currency=CAD
13
+ }
14
+ }
15
+ }
16
+ membership {
17
+ $expression {
18
+ operator call
19
+ target (ref)"window#/Intl/formatNumber"
20
+ value {
21
+ - 45
22
+ - #null
23
+ - style=currency currency=CAD
24
+ }
25
+ }
26
+ }
27
+ trams {
28
+ $expression {
29
+ operator call
30
+ target (ref)"window#/Intl/formatList"
31
+ value {
32
+ - "2" "6" "11"
33
+ }
34
+ }
35
+ }
36
+ closedFrom {
37
+ $expression {
38
+ operator call
39
+ target (ref)"window#/Intl/formatDate"
40
+ value {
41
+ - "2026-12-24"
42
+ - #null
43
+ - day=numeric month=long
44
+ }
45
+ }
46
+ }
47
+ closedTo {
48
+ $expression {
49
+ operator call
50
+ target (ref)"window#/Intl/formatDate"
51
+ value {
52
+ - "2026-12-26"
53
+ - #null
54
+ - day=numeric month=long year=numeric
55
+ }
56
+ }
57
+ }
58
+ }
59
+ mu-pagehead {
60
+ $props {
61
+ kicker Visit
62
+ title "Ten to six, six days a week"
63
+ standfirst "There is no ticket desk, because there is no ticket. Walk in from the quay side, leave your bag at the counter if it is bigger than a satchel, and start wherever you like."
64
+ metaLabel Address
65
+ metaValue "2 Quai des Écluses, Old Harbour"
66
+ }
67
+ }
68
+ mu-band {
69
+ $props index="01" label=Hours tone=chalk
70
+ div {
71
+ style {
72
+ display grid
73
+ gridTemplateColumns "repeat(2, minmax(0, 1fr))"
74
+ columnGap "clamp(2rem, 5vw, 4rem)"
75
+ @--md gridTemplateColumns="minmax(0, 1fr)"
76
+ }
77
+ div {
78
+ mu-fact {
79
+ $props {
80
+ term "Tue – Fri"
81
+ value "10:00 – 18:00"
82
+ note "Last entry to the reading room at 17:00."
83
+ }
84
+ }
85
+ mu-fact {
86
+ $props {
87
+ term "Sat – Sun"
88
+ value "10:00 – 18:00"
89
+ note "The courtyard stays open until 19:00 from May to September."
90
+ }
91
+ }
92
+ }
93
+ div {
94
+ mu-fact {
95
+ $props {
96
+ term Monday
97
+ value Closed
98
+ note "Conservation day. The café on the quay side stays open."
99
+ }
100
+ }
101
+ mu-fact {
102
+ $props {
103
+ term "Winter closure"
104
+ value "From ${state.closedFrom} to ${state.closedTo}"
105
+ note "The only three consecutive days the hall is shut all year."
106
+ }
107
+ }
108
+ }
109
+ }
110
+ }
111
+ mu-band {
112
+ $props index="02" label=Admission tone=card
113
+ div {
114
+ style {
115
+ display grid
116
+ gridTemplateColumns "minmax(0, 1fr) minmax(0, 1fr)"
117
+ columnGap "clamp(2rem, 5vw, 4rem)"
118
+ rowGap "1.5rem"
119
+ @--md gridTemplateColumns="minmax(0, 1fr)"
120
+ }
121
+ div {
122
+ style {
123
+ border "2px solid var(--color-ink)"
124
+ backgroundColor "var(--color-pigment)"
125
+ color "var(--color-card)"
126
+ padding "clamp(1.5rem, 3.5vw, 2.25rem)"
127
+ }
128
+ p "General admission" {
129
+ style {
130
+ margin "0 0 0.9rem"
131
+ fontFamily "var(--font-label)"
132
+ fontSize "0.66rem"
133
+ letterSpacing "var(--label-tracking)"
134
+ textTransform "var(--label-case)"
135
+ opacity "0.8"
136
+ }
137
+ }
138
+ p Free {
139
+ style {
140
+ margin "0"
141
+ fontFamily "var(--font-display)"
142
+ fontSize "clamp(2.4rem, 6vw, 3.6rem)"
143
+ fontWeight "700"
144
+ lineHeight "calc(1 * var(--leading-scale))"
145
+ letterSpacing "var(--display-tracking)"
146
+ }
147
+ }
148
+ p "Written into the founding subscription of 1897 and never changed. No ticket, no booking, no members-only hour." {
149
+ style margin="1.1rem 0 0" lineHeight="1.65" maxWidth="34ch"
150
+ }
151
+ }
152
+ div {
153
+ mu-fact {
154
+ $props {
155
+ term "Guided tour"
156
+ value "${state.tourPrice}"
157
+ note "Ninety minutes, Saturdays at 11:00 and 15:00. Book at the desk."
158
+ }
159
+ }
160
+ mu-fact {
161
+ $props {
162
+ term Membership
163
+ value "${state.membership}"
164
+ note "A year of tours, the quarterly, and a vote at the annual meeting."
165
+ }
166
+ }
167
+ mu-fact {
168
+ $props {
169
+ term Schools
170
+ value "No charge, ever"
171
+ note "Including the coach. Write to the education desk six weeks ahead."
172
+ }
173
+ }
174
+ }
175
+ }
176
+ }
177
+ mu-band {
178
+ $props index="03" label="Getting here" tone=chalk
179
+ div {
180
+ style {
181
+ display grid
182
+ gridTemplateColumns "repeat(2, minmax(0, 1fr))"
183
+ columnGap "clamp(2rem, 5vw, 4rem)"
184
+ @--md gridTemplateColumns="minmax(0, 1fr)"
185
+ }
186
+ div {
187
+ mu-fact {
188
+ $props {
189
+ term Tram
190
+ value "Lines ${state.trams}"
191
+ note "Stop: Écluses. The hall is the glass roof on your left as you step down."
192
+ }
193
+ }
194
+ mu-fact {
195
+ $props {
196
+ term "On foot"
197
+ value "Eleven minutes from the old town gate"
198
+ note "Follow the quay; the last stretch is cobbled and uneven."
199
+ }
200
+ }
201
+ }
202
+ div {
203
+ mu-fact {
204
+ $props {
205
+ term "By bicycle"
206
+ value "Forty racks under the north canopy"
207
+ note "Covered, lit, and in view of the front desk."
208
+ }
209
+ }
210
+ mu-fact {
211
+ $props {
212
+ term "By car"
213
+ value "No museum car park"
214
+ note "Public parking at Bassin Nord, six minutes' walk over the lock bridge."
215
+ }
216
+ }
217
+ }
218
+ }
219
+ }
220
+ mu-band {
221
+ $props index="04" label=Access tone=card
222
+ div {
223
+ style maxWidth="var(--measure)"
224
+ p "Every gallery is reachable step-free from the quay-side entrance, including the courtyard and the reading room. The only exception is the customs-house walk, which has four stone steps and no handrail; a level route around it is signed at the entrance." {
225
+ style margin="0 0 1.5rem" lineHeight="1.75"
226
+ }
227
+ mu-fact {
228
+ $props {
229
+ term Step-free
230
+ value "All galleries and the reading room"
231
+ note "Two lifts, both large enough for a wheelchair and a companion."
232
+ }
233
+ }
234
+ mu-fact {
235
+ $props {
236
+ term Seating
237
+ value "A bench in every room"
238
+ note "Folding stools at the desk, free to borrow, no deposit."
239
+ }
240
+ }
241
+ mu-fact {
242
+ $props {
243
+ term "Quiet hour"
244
+ value "Wednesdays, 10:00 – 11:00"
245
+ note "Lights up, sound off, and half the usual visitor numbers."
246
+ }
247
+ }
248
+ mu-fact {
249
+ $props {
250
+ term "Assistance dogs"
251
+ value "Welcome everywhere"
252
+ note "Water bowls at both entrances and in the courtyard."
253
+ }
254
+ }
255
+ }
256
+ }
257
+ mu-cta {
258
+ $props {
259
+ kicker "Before you come"
260
+ heading "See what is hanging this week."
261
+ text "Three exhibitions are open, and the programme lists what changes next."
262
+ label "What's on"
263
+ href "/exhibitions/"
264
+ }
265
+ }
266
+ }
@@ -0,0 +1,130 @@
1
+ /- kdl-version 2
2
+ $schema "./project.schema.json"
3
+ project Atrium
4
+
5
+ url "https://example.com"
6
+
7
+ defaults layout="./layouts/base.jxn" lang=en
8
+
9
+ i18n {
10
+ defaultLocale en
11
+ locales en fr-CA ar
12
+ routing prefix-except-default
13
+ }
14
+
15
+ $head {
16
+ meta name=viewport content="width=device-width, initial-scale=1"
17
+ meta name=description content="Atrium is the city museum of art and history — four centuries of the harbour, its makers and its maps, in a glass hall open to everyone, in English, French and Arabic."
18
+ link rel=icon href="/favicon.svg" type="image/svg+xml"
19
+ link rel=preconnect href="https://fonts.googleapis.com"
20
+ link rel=preconnect href="https://fonts.gstatic.com" crossorigin=""
21
+ link rel=stylesheet href="https://fonts.googleapis.com/css2?family=Noto+Sans+Display:wght@400;500;700&family=Noto+Sans+Mono:wght@400;500&family=Noto+Serif:wght@400;500;600&family=Noto+Kufi+Arabic:wght@400;500;700&family=Noto+Naskh+Arabic:wght@400;500;600&display=swap"
22
+ }
23
+
24
+ $media {
25
+ --lg "(max-width: 1080px)"
26
+ --md "(max-width: 840px)"
27
+ --sm "(max-width: 600px)"
28
+ }
29
+
30
+ style {
31
+ --color-ink "#17181d"
32
+ --color-ink-deep "#0b0c10"
33
+ --color-chalk "#e7e3da"
34
+ --color-chalk-deep "#d8d3c6"
35
+ --color-card "#f7f5f0"
36
+ --color-pigment "#2438c8"
37
+ --color-pigment-deep "#182a9c"
38
+ --color-pigment-tint "rgba(36, 56, 200, 0.09)"
39
+ --color-clay "#ad4529"
40
+ --color-muted "#5c5a66"
41
+ --color-hairline "#cbc5b8"
42
+ --font-display "'Noto Sans Display', 'Noto Kufi Arabic', system-ui, -apple-system, sans-serif"
43
+ --font-text "'Noto Serif', 'Noto Naskh Arabic', Georgia, 'Times New Roman', serif"
44
+ --font-label "'Noto Sans Mono', 'Noto Kufi Arabic', ui-monospace, SFMono-Regular, Menlo, monospace"
45
+ --label-tracking "0.16em"
46
+ --label-case uppercase
47
+ --display-tracking "-0.035em"
48
+ --radius "0"
49
+ --max-width "1240px"
50
+ --measure "62ch"
51
+ --label-column "9.5rem"
52
+ --gutter "clamp(1.25rem, 4vw, 3rem)"
53
+ --band-space "clamp(3.25rem, 7vw, 6rem)"
54
+ --flip-inline "1"
55
+ --leading-scale "1"
56
+ margin "0"
57
+ padding "0"
58
+ fontFamily "var(--font-text)"
59
+ fontSize "17px"
60
+ lineHeight "1.7"
61
+ color "var(--color-ink)"
62
+ backgroundColor "var(--color-chalk)"
63
+ WebkitFontSmoothing antialiased
64
+ ":lang(ar)" {
65
+ --label-tracking "0"
66
+ --label-case none
67
+ --display-tracking "0"
68
+ --flip-inline "-1"
69
+ --leading-scale "1.35"
70
+ }
71
+ ":dir(rtl)" {
72
+ --flip-inline "-1"
73
+ }
74
+ ":lang(ar) h1, :lang(ar) h2, :lang(ar) h3" {
75
+ textWrap balance
76
+ }
77
+ }
78
+
79
+ images optimize=#false lazyLoad=#true
80
+
81
+ content {
82
+ exhibitions {
83
+ source "./content/exhibitions/{locale}/"
84
+ format Markdown
85
+ schema {
86
+ type object
87
+ properties {
88
+ title type=string description="Exhibition title, as it appears on the wall."
89
+ description {
90
+ type string
91
+ description "One-sentence standfirst for cards and search results."
92
+ }
93
+ date {
94
+ type string
95
+ description "Opening date, ISO 8601 (YYYY-MM-DD) — Intl/formatDate renders it in each page's own language."
96
+ }
97
+ until type=string description="Closing date, ISO 8601 (YYYY-MM-DD)."
98
+ gallery type=string description="Where in the building it hangs."
99
+ curator {
100
+ type string
101
+ description "Curator's name — a proper noun, so it stays the same in every language."
102
+ }
103
+ works {
104
+ type number
105
+ description "Number of objects on show; formatted with Intl/formatNumber, so Arabic pages get Arabic-Indic digits."
106
+ }
107
+ hue {
108
+ type number
109
+ description "Hue (0–360) of this exhibition's drawn plate. The starter ships no photographs; each card's art is CSS, generated from this one number."
110
+ }
111
+ enKey {
112
+ type string
113
+ description "This entry's id, repeated as a field only the English entries carry. Three translations share one id, and ContentEntry matches a field value across the whole collection — so each locale's detail route matches its own key field, and the value being the id is what keeps the three URLs parallel."
114
+ }
115
+ lang {
116
+ type string
117
+ description "BCP 47 tag of the directory this entry came from. One collection holds every language at once, so a locale's index filters on this to list only its own."
118
+ }
119
+ order type=number description="Running order on the exhibitions index."
120
+ }
121
+ required title description date until gallery lang
122
+ }
123
+ }
124
+ }
125
+
126
+ build outDir="./dist" format=directory trailingSlash=always
127
+
128
+ extensions {
129
+ - "@jxsuite/parser"
130
+ }
@@ -0,0 +1,97 @@
1
+ /- kdl-version 2
2
+
3
+ np-contact-form {
4
+ state heading="Send us a message"
5
+ style {
6
+ display block
7
+ padding "clamp(1.75rem, 4vw, 2.5rem)"
8
+ backgroundColor "var(--color-bg-white)"
9
+ border "1px solid var(--color-border)"
10
+ borderRadius "var(--radius-lg)"
11
+ boxShadow "var(--shadow-card)"
12
+ }
13
+ h3 "${state.heading}" {
14
+ style {
15
+ fontFamily "var(--font-display)"
16
+ fontSize "1.75rem"
17
+ fontWeight "600"
18
+ color "var(--color-primary-deep)"
19
+ margin "0 0 1.5rem"
20
+ }
21
+ }
22
+ form action="#" method=post {
23
+ style display=grid gap="1rem" alignContent=start
24
+ input type=text name=name placeholder="Your name" required="true" aria-label="Your name" {
25
+ style {
26
+ width "100%"
27
+ padding "0.85rem 1rem"
28
+ border "1px solid var(--color-border-strong)"
29
+ borderRadius "var(--radius-sm)"
30
+ fontSize "1rem"
31
+ fontFamily inherit
32
+ backgroundColor "var(--color-bg-cream)"
33
+ }
34
+ }
35
+ input type=email name=email placeholder="Email address" required="true" aria-label="Email address" {
36
+ style {
37
+ width "100%"
38
+ padding "0.85rem 1rem"
39
+ border "1px solid var(--color-border-strong)"
40
+ borderRadius "var(--radius-sm)"
41
+ fontSize "1rem"
42
+ fontFamily inherit
43
+ backgroundColor "var(--color-bg-cream)"
44
+ }
45
+ }
46
+ select name=interest aria-label="I'm interested in" {
47
+ style {
48
+ width "100%"
49
+ padding "0.85rem 1rem"
50
+ border "1px solid var(--color-border-strong)"
51
+ borderRadius "var(--radius-sm)"
52
+ fontSize "1rem"
53
+ backgroundColor "var(--color-bg-cream)"
54
+ fontFamily inherit
55
+ }
56
+ option value=general "General question"
57
+ option value=volunteer "I want to volunteer"
58
+ option value=donate "I want to donate or fundraise"
59
+ option value=partner "Partnership or sponsorship"
60
+ }
61
+ textarea name=message rows="4" placeholder="How can we help?" aria-label=Message {
62
+ style {
63
+ width "100%"
64
+ padding "0.85rem 1rem"
65
+ border "1px solid var(--color-border-strong)"
66
+ borderRadius "var(--radius-sm)"
67
+ fontSize "1rem"
68
+ fontFamily inherit
69
+ backgroundColor "var(--color-bg-cream)"
70
+ }
71
+ }
72
+ button type=submit "Send message" {
73
+ style {
74
+ display inline-flex
75
+ alignItems center
76
+ justifyContent center
77
+ gap "0.4rem"
78
+ backgroundColor "var(--color-accent)"
79
+ color "var(--color-text-white)"
80
+ padding "0.95rem 1.75rem"
81
+ border none
82
+ borderRadius "999px"
83
+ fontSize "1rem"
84
+ fontFamily inherit
85
+ fontWeight "800"
86
+ cursor pointer
87
+ justifySelf start
88
+ boxShadow "0 12px 26px -12px rgba(242,106,61,0.8)"
89
+ transition "background-color 0.15s, transform 0.15s"
90
+ :hover backgroundColor="var(--color-accent-hover)" transform="translateY(-1px)"
91
+ }
92
+ }
93
+ p "This is a demo form. Wire it to your email or CRM in pages/contact.md." {
94
+ style fontSize="0.85rem" fontWeight="600" color="var(--color-text-muted)" margin="0"
95
+ }
96
+ }
97
+ }
@@ -0,0 +1,104 @@
1
+ /- kdl-version 2
2
+
3
+ np-contact-info {
4
+ state {
5
+ line1 "240 Riverside Avenue"
6
+ line2 "Rivertown, CA 90210"
7
+ phone "(555) 204-7788"
8
+ phoneHref tel:+15552047788
9
+ email hello@rivertownfoundation.org
10
+ emailHref mailto:hello@rivertownfoundation.org
11
+ }
12
+ style display=block
13
+ div {
14
+ style {
15
+ padding "2rem"
16
+ backgroundColor "var(--color-primary-deep)"
17
+ color "var(--color-text-white)"
18
+ borderRadius "var(--radius-lg)"
19
+ }
20
+ h3 "Visit us" {
21
+ style {
22
+ fontFamily "var(--font-display)"
23
+ fontSize "1.5rem"
24
+ fontWeight "600"
25
+ margin "0 0 1rem"
26
+ }
27
+ }
28
+ p "${state.line1}" {
29
+ style margin="0 0 0.35rem" opacity="0.85" fontWeight="600"
30
+ }
31
+ p "${state.line2}" {
32
+ style margin="0 0 0.35rem" opacity="0.85" fontWeight="600"
33
+ }
34
+ p {
35
+ style margin="0.85rem 0 0.35rem"
36
+ a href="${state.phoneHref}" "${state.phone}" {
37
+ style color="var(--color-gold)" textDecoration=none fontWeight="800"
38
+ }
39
+ }
40
+ p {
41
+ style margin="0"
42
+ a href="${state.emailHref}" "${state.email}" {
43
+ style color="var(--color-gold)" textDecoration=none fontWeight="800"
44
+ }
45
+ }
46
+ }
47
+ div {
48
+ style {
49
+ marginTop "1.5rem"
50
+ padding "2rem"
51
+ backgroundColor "var(--color-bg-cream)"
52
+ border "1px solid var(--color-border)"
53
+ borderRadius "var(--radius-lg)"
54
+ }
55
+ h3 "Office hours" {
56
+ style {
57
+ fontFamily "var(--font-display)"
58
+ fontSize "1.5rem"
59
+ fontWeight "600"
60
+ color "var(--color-primary-deep)"
61
+ margin "0 0 1.25rem"
62
+ }
63
+ }
64
+ div {
65
+ style {
66
+ display flex
67
+ justifyContent space-between
68
+ padding "0.6rem 0"
69
+ borderBottom "1px solid var(--color-border)"
70
+ fontWeight "600"
71
+ }
72
+ span "Monday – Friday" {
73
+ style fontWeight="700"
74
+ }
75
+ span "9:00am – 5:00pm" {
76
+ style color="var(--color-text-muted)"
77
+ }
78
+ }
79
+ div {
80
+ style {
81
+ display flex
82
+ justifyContent space-between
83
+ padding "0.6rem 0"
84
+ borderBottom "1px solid var(--color-border)"
85
+ fontWeight "600"
86
+ }
87
+ span Saturday {
88
+ style fontWeight="700"
89
+ }
90
+ span "9:00am – 1:00pm (Pantry)" {
91
+ style color="var(--color-text-muted)"
92
+ }
93
+ }
94
+ div {
95
+ style display=flex justifyContent=space-between padding="0.6rem 0" fontWeight="600"
96
+ span Sunday {
97
+ style fontWeight="700"
98
+ }
99
+ span Closed {
100
+ style color="var(--color-text-muted)"
101
+ }
102
+ }
103
+ }
104
+ }