@jxsuite/starters 3.4.0 → 3.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (500) hide show
  1. package/package.json +5 -5
  2. package/sites/blog/components/bl-author-bio.jxn +64 -0
  3. package/sites/blog/components/bl-contact-form.jxn +77 -0
  4. package/sites/blog/components/bl-contact-info.jxn +32 -0
  5. package/sites/blog/components/bl-cta.jxn +52 -0
  6. package/sites/blog/components/bl-footer.jxn +85 -0
  7. package/sites/blog/components/bl-masthead.jxn +111 -0
  8. package/sites/blog/components/bl-nav.jxn +62 -0
  9. package/sites/blog/components/bl-newsletter-cta.jxn +104 -0
  10. package/sites/blog/components/bl-post-card.jxn +106 -0
  11. package/sites/blog/components/bl-post-list.jxn +11 -0
  12. package/sites/blog/components/bl-prose.jxn +67 -0
  13. package/sites/blog/components/bl-section-header.jxn +52 -0
  14. package/sites/blog/components/bl-tag-pill.jxn +19 -0
  15. package/sites/blog/document.schema.json +26 -2
  16. package/sites/blog/layouts/base.jxn +17 -0
  17. package/sites/blog/layouts/post.jxn +13 -0
  18. package/sites/blog/package.json +3 -3
  19. package/sites/blog/pages/[slug].jxn +107 -0
  20. package/sites/blog/project.jxn +1 -1
  21. package/sites/course/components/co-application.jxn +106 -0
  22. package/sites/course/components/co-cohort.jxn +132 -0
  23. package/sites/course/components/co-cta.jxn +95 -0
  24. package/sites/course/components/co-curriculum-accordion.jxn +917 -0
  25. package/sites/course/components/co-faq.jxn +348 -0
  26. package/sites/course/components/co-footer.jxn +138 -0
  27. package/sites/course/components/co-hero.jxn +354 -0
  28. package/sites/course/components/co-instructor-card.jxn +128 -0
  29. package/sites/course/components/co-mentor.jxn +51 -0
  30. package/sites/course/components/co-module-card.jxn +101 -0
  31. package/sites/course/components/co-nav.jxn +172 -0
  32. package/sites/course/components/co-outcome-card.jxn +57 -0
  33. package/sites/course/components/co-outcomes.jxn +179 -0
  34. package/sites/course/components/co-pricing.jxn +145 -0
  35. package/sites/course/components/co-section-header.jxn +55 -0
  36. package/sites/course/components/co-testimonial-card.jxn +69 -0
  37. package/sites/course/document.schema.json +26 -2
  38. package/sites/course/layouts/base.jxn +17 -0
  39. package/sites/course/package.json +3 -3
  40. package/sites/course/project.jxn +1 -1
  41. package/sites/event/components/ev-agenda-tabs.jxn +663 -0
  42. package/sites/event/components/ev-cta.jxn +93 -0
  43. package/sites/event/components/ev-feature.jxn +46 -0
  44. package/sites/event/components/ev-footer.jxn +135 -0
  45. package/sites/event/components/ev-hero.jxn +323 -0
  46. package/sites/event/components/ev-nav.jxn +142 -0
  47. package/sites/event/components/ev-reason.jxn +50 -0
  48. package/sites/event/components/ev-savedate.jxn +268 -0
  49. package/sites/event/components/ev-section-header.jxn +51 -0
  50. package/sites/event/components/ev-session-row.jxn +103 -0
  51. package/sites/event/components/ev-speaker-card.jxn +104 -0
  52. package/sites/event/components/ev-sponsors.jxn +110 -0
  53. package/sites/event/components/ev-stat.jxn +39 -0
  54. package/sites/event/components/ev-ticket-card.jxn +169 -0
  55. package/sites/event/components/ev-venue.jxn +61 -0
  56. package/sites/event/document.schema.json +26 -2
  57. package/sites/event/layouts/base.jxn +12 -0
  58. package/sites/event/package.json +3 -3
  59. package/sites/event/project.jxn +1 -1
  60. package/sites/fitness-studio/components/fs-band.jxn +119 -0
  61. package/sites/fitness-studio/components/fs-booking.jxn +92 -0
  62. package/sites/fitness-studio/components/fs-class-card.jxn +103 -0
  63. package/sites/fitness-studio/components/fs-class-grid.jxn +23 -0
  64. package/sites/fitness-studio/components/fs-cta.jxn +81 -0
  65. package/sites/fitness-studio/components/fs-feature.jxn +40 -0
  66. package/sites/fitness-studio/components/fs-footer.jxn +116 -0
  67. package/sites/fitness-studio/components/fs-hero.jxn +290 -0
  68. package/sites/fitness-studio/components/fs-hours.jxn +78 -0
  69. package/sites/fitness-studio/components/fs-instructor-card.jxn +104 -0
  70. package/sites/fitness-studio/components/fs-intro.jxn +231 -0
  71. package/sites/fitness-studio/components/fs-modality.jxn +133 -0
  72. package/sites/fitness-studio/components/fs-nav.jxn +95 -0
  73. package/sites/fitness-studio/components/fs-pricing-card.jxn +190 -0
  74. package/sites/fitness-studio/components/fs-pricing-table.jxn +322 -0
  75. package/sites/fitness-studio/components/fs-review.jxn +59 -0
  76. package/sites/fitness-studio/components/fs-schedule.jxn +714 -0
  77. package/sites/fitness-studio/components/fs-section-header.jxn +55 -0
  78. package/sites/fitness-studio/document.schema.json +26 -2
  79. package/sites/fitness-studio/layouts/base.jxn +17 -0
  80. package/sites/fitness-studio/package.json +3 -3
  81. package/sites/fitness-studio/project.jxn +1 -1
  82. package/sites/home-services/components/hs-callbar.jxn +60 -0
  83. package/sites/home-services/components/hs-cta.jxn +139 -0
  84. package/sites/home-services/components/hs-feature.jxn +43 -0
  85. package/sites/home-services/components/hs-footer.jxn +169 -0
  86. package/sites/home-services/components/hs-gallery.jxn +51 -0
  87. package/sites/home-services/components/hs-hero.jxn +308 -0
  88. package/sites/home-services/components/hs-intro.jxn +97 -0
  89. package/sites/home-services/components/hs-nav.jxn +207 -0
  90. package/sites/home-services/components/hs-reservation.jxn +125 -0
  91. package/sites/home-services/components/hs-review.jxn +84 -0
  92. package/sites/home-services/components/hs-section-header.jxn +56 -0
  93. package/sites/home-services/components/hs-service-card.jxn +68 -0
  94. package/sites/home-services/components/hs-stat.jxn +40 -0
  95. package/sites/home-services/components/hs-step.jxn +67 -0
  96. package/sites/home-services/components/hs-trust-bar.jxn +183 -0
  97. package/sites/home-services/document.schema.json +26 -2
  98. package/sites/home-services/layouts/base.jxn +22 -0
  99. package/sites/home-services/package.json +3 -3
  100. package/sites/home-services/project.jxn +1 -1
  101. package/sites/museum/components/mu-band.jxn +63 -0
  102. package/sites/museum/components/mu-cta.jxn +76 -0
  103. package/sites/museum/components/mu-exhibition-card.jxn +118 -0
  104. package/sites/museum/components/mu-exhibition-row.jxn +142 -0
  105. package/sites/museum/components/mu-fact.jxn +40 -0
  106. package/sites/museum/components/mu-footer.jxn +206 -0
  107. package/sites/museum/components/mu-hero.jxn +165 -0
  108. package/sites/museum/components/mu-more.jxn +30 -0
  109. package/sites/museum/components/mu-oculus.jxn +33 -0
  110. package/sites/museum/components/mu-pagehead.jxn +76 -0
  111. package/sites/museum/components/mu-quote.jxn +36 -0
  112. package/sites/museum/document.schema.json +26 -2
  113. package/sites/museum/layouts/ar.jxn +31 -0
  114. package/sites/museum/layouts/base.jxn +227 -0
  115. package/sites/museum/layouts/fr-ca.jxn +30 -0
  116. package/sites/museum/package.json +3 -3
  117. package/sites/museum/pages/about.jxn +228 -0
  118. package/sites/museum/pages/ar/about.jxn +232 -0
  119. package/sites/museum/pages/ar/exhibitions/[slug].jxn +150 -0
  120. package/sites/museum/pages/ar/exhibitions/index.jxn +82 -0
  121. package/sites/museum/pages/ar/index.jxn +206 -0
  122. package/sites/museum/pages/ar/visit.jxn +270 -0
  123. package/sites/museum/pages/exhibitions/[slug].jxn +146 -0
  124. package/sites/museum/pages/exhibitions/index.jxn +78 -0
  125. package/sites/museum/pages/fr-ca/a-propos.jxn +233 -0
  126. package/sites/museum/pages/fr-ca/expositions/[slug].jxn +151 -0
  127. package/sites/museum/pages/fr-ca/expositions/index.jxn +83 -0
  128. package/sites/museum/pages/fr-ca/index.jxn +206 -0
  129. package/sites/museum/pages/fr-ca/visite.jxn +271 -0
  130. package/sites/museum/pages/index.jxn +202 -0
  131. package/sites/museum/pages/visit.jxn +266 -0
  132. package/sites/museum/project.jxn +1 -1
  133. package/sites/nonprofit/components/np-contact-form.jxn +97 -0
  134. package/sites/nonprofit/components/np-contact-info.jxn +104 -0
  135. package/sites/nonprofit/components/np-cta.jxn +163 -0
  136. package/sites/nonprofit/components/np-donate-tier.jxn +103 -0
  137. package/sites/nonprofit/components/np-feature.jxn +46 -0
  138. package/sites/nonprofit/components/np-footer.jxn +194 -0
  139. package/sites/nonprofit/components/np-hero.jxn +275 -0
  140. package/sites/nonprofit/components/np-impact-band.jxn +83 -0
  141. package/sites/nonprofit/components/np-intro.jxn +130 -0
  142. package/sites/nonprofit/components/np-nav.jxn +157 -0
  143. package/sites/nonprofit/components/np-program-card.jxn +95 -0
  144. package/sites/nonprofit/components/np-section-header.jxn +63 -0
  145. package/sites/nonprofit/components/np-stat.jxn +51 -0
  146. package/sites/nonprofit/components/np-step.jxn +73 -0
  147. package/sites/nonprofit/components/np-team-member.jxn +60 -0
  148. package/sites/nonprofit/components/np-testimonial.jxn +120 -0
  149. package/sites/nonprofit/document.schema.json +26 -2
  150. package/sites/nonprofit/layouts/base.jxn +17 -0
  151. package/sites/nonprofit/package.json +3 -3
  152. package/sites/nonprofit/project.jxn +1 -1
  153. package/sites/portfolio/components/pv-about-split.jxn +53 -0
  154. package/sites/portfolio/components/pv-category-pill.jxn +19 -0
  155. package/sites/portfolio/components/pv-contact-form.jxn +72 -0
  156. package/sites/portfolio/components/pv-cta.jxn +62 -0
  157. package/sites/portfolio/components/pv-feature.jxn +28 -0
  158. package/sites/portfolio/components/pv-footer.jxn +113 -0
  159. package/sites/portfolio/components/pv-gallery.jxn +40 -0
  160. package/sites/portfolio/components/pv-hero.jxn +109 -0
  161. package/sites/portfolio/components/pv-nav.jxn +76 -0
  162. package/sites/portfolio/components/pv-project-card.jxn +118 -0
  163. package/sites/portfolio/components/pv-project-grid.jxn +29 -0
  164. package/sites/portfolio/components/pv-section-header.jxn +65 -0
  165. package/sites/portfolio/document.schema.json +26 -2
  166. package/sites/portfolio/layouts/base.jxn +12 -0
  167. package/sites/portfolio/package.json +3 -3
  168. package/sites/portfolio/pages/[slug].jxn +177 -0
  169. package/sites/portfolio/project.jxn +1 -1
  170. package/sites/professional-firm/components/pf-article-header.jxn +60 -0
  171. package/sites/professional-firm/components/pf-contact-form.jxn +74 -0
  172. package/sites/professional-firm/components/pf-contact-info.jxn +101 -0
  173. package/sites/professional-firm/components/pf-cta.jxn +63 -0
  174. package/sites/professional-firm/components/pf-feature.jxn +32 -0
  175. package/sites/professional-firm/components/pf-footer.jxn +171 -0
  176. package/sites/professional-firm/components/pf-hero.jxn +139 -0
  177. package/sites/professional-firm/components/pf-insight-row.jxn +111 -0
  178. package/sites/professional-firm/components/pf-intro.jxn +68 -0
  179. package/sites/professional-firm/components/pf-logo-bar.jxn +90 -0
  180. package/sites/professional-firm/components/pf-nav.jxn +93 -0
  181. package/sites/professional-firm/components/pf-section-header.jxn +53 -0
  182. package/sites/professional-firm/components/pf-service-row.jxn +67 -0
  183. package/sites/professional-firm/components/pf-statband.jxn +135 -0
  184. package/sites/professional-firm/components/pf-team-member.jxn +53 -0
  185. package/sites/professional-firm/document.schema.json +26 -2
  186. package/sites/professional-firm/layouts/article.jxn +88 -0
  187. package/sites/professional-firm/layouts/base.jxn +12 -0
  188. package/sites/professional-firm/package.json +3 -3
  189. package/sites/professional-firm/pages/insights/[slug].jxn +106 -0
  190. package/sites/professional-firm/project.jxn +1 -1
  191. package/sites/real-estate/components/re-agent-band.jxn +165 -0
  192. package/sites/real-estate/components/re-agent-card.jxn +78 -0
  193. package/sites/real-estate/components/re-contact-form.jxn +119 -0
  194. package/sites/real-estate/components/re-cta.jxn +98 -0
  195. package/sites/real-estate/components/re-detail-row.jxn +18 -0
  196. package/sites/real-estate/components/re-feature.jxn +41 -0
  197. package/sites/real-estate/components/re-footer.jxn +219 -0
  198. package/sites/real-estate/components/re-hero.jxn +367 -0
  199. package/sites/real-estate/components/re-intro.jxn +43 -0
  200. package/sites/real-estate/components/re-listing-card.jxn +210 -0
  201. package/sites/real-estate/components/re-listings-filter.jxn +371 -0
  202. package/sites/real-estate/components/re-nav.jxn +162 -0
  203. package/sites/real-estate/components/re-neighborhood.jxn +101 -0
  204. package/sites/real-estate/components/re-section-header.jxn +55 -0
  205. package/sites/real-estate/components/re-stat.jxn +26 -0
  206. package/sites/real-estate/components/re-step.jxn +42 -0
  207. package/sites/real-estate/components/re-testimonial.jxn +66 -0
  208. package/sites/real-estate/document.schema.json +26 -2
  209. package/sites/real-estate/layouts/base.jxn +17 -0
  210. package/sites/real-estate/package.json +3 -3
  211. package/sites/real-estate/pages/[slug].jxn +452 -0
  212. package/sites/real-estate/project.jxn +1 -1
  213. package/sites/restaurant/components/bit-cta.jxn +105 -0
  214. package/sites/restaurant/components/bit-feature.jxn +38 -0
  215. package/sites/restaurant/components/bit-footer.jxn +142 -0
  216. package/sites/restaurant/components/bit-gallery.jxn +50 -0
  217. package/sites/restaurant/components/bit-hero.jxn +194 -0
  218. package/sites/restaurant/components/bit-hours.jxn +145 -0
  219. package/sites/restaurant/components/bit-intro.jxn +75 -0
  220. package/sites/restaurant/components/bit-menu-group.jxn +51 -0
  221. package/sites/restaurant/components/bit-menu-item.jxn +50 -0
  222. package/sites/restaurant/components/bit-nav.jxn +145 -0
  223. package/sites/restaurant/components/bit-reservation.jxn +90 -0
  224. package/sites/restaurant/components/bit-review.jxn +54 -0
  225. package/sites/restaurant/components/bit-section-header.jxn +73 -0
  226. package/sites/restaurant/document.schema.json +26 -2
  227. package/sites/restaurant/layouts/base.jxn +17 -0
  228. package/sites/restaurant/package.json +3 -3
  229. package/sites/restaurant/project.jxn +1 -1
  230. package/sites/saas/components/sa-check-item.jxn +25 -0
  231. package/sites/saas/components/sa-contact-form.jxn +94 -0
  232. package/sites/saas/components/sa-cta.jxn +68 -0
  233. package/sites/saas/components/sa-faq.jxn +347 -0
  234. package/sites/saas/components/sa-feature-card.jxn +57 -0
  235. package/sites/saas/components/sa-feature-split.jxn +43 -0
  236. package/sites/saas/components/sa-footer.jxn +106 -0
  237. package/sites/saas/components/sa-hero.jxn +217 -0
  238. package/sites/saas/components/sa-logo-cloud.jxn +98 -0
  239. package/sites/saas/components/sa-nav.jxn +108 -0
  240. package/sites/saas/components/sa-pricing.jxn +317 -0
  241. package/sites/saas/components/sa-section-header.jxn +43 -0
  242. package/sites/saas/components/sa-stat.jxn +32 -0
  243. package/sites/saas/components/sa-testimonial-card.jxn +37 -0
  244. package/sites/saas/document.schema.json +26 -2
  245. package/sites/saas/layouts/base.jxn +17 -0
  246. package/sites/saas/package.json +3 -3
  247. package/sites/saas/project.jxn +1 -1
  248. package/sites/shop/components/shp-badge.jxn +17 -0
  249. package/sites/shop/components/shp-category-tile.jxn +79 -0
  250. package/sites/shop/components/shp-contact-form.jxn +84 -0
  251. package/sites/shop/components/shp-cta.jxn +85 -0
  252. package/sites/shop/components/shp-feature.jxn +44 -0
  253. package/sites/shop/components/shp-footer.jxn +311 -0
  254. package/sites/shop/components/shp-hero.jxn +311 -0
  255. package/sites/shop/components/shp-intro.jxn +42 -0
  256. package/sites/shop/components/shp-nav.jxn +273 -0
  257. package/sites/shop/components/shp-newsletter.jxn +119 -0
  258. package/sites/shop/components/shp-product-card.jxn +187 -0
  259. package/sites/shop/components/shp-product-filter.jxn +263 -0
  260. package/sites/shop/components/shp-review.jxn +38 -0
  261. package/sites/shop/components/shp-section-header.jxn +61 -0
  262. package/sites/shop/components/shp-service.jxn +58 -0
  263. package/sites/shop/components/shp-stat.jxn +27 -0
  264. package/sites/shop/components/shp-trust.jxn +39 -0
  265. package/sites/shop/components/shp-visit-info.jxn +82 -0
  266. package/sites/shop/document.schema.json +26 -2
  267. package/sites/shop/layouts/base.jxn +17 -0
  268. package/sites/shop/package.json +3 -3
  269. package/sites/shop/pages/products/[sku].jxn +351 -0
  270. package/sites/shop/project.jxn +1 -1
  271. package/sites/blog/components/bl-author-bio.json +0 -86
  272. package/sites/blog/components/bl-contact-form.json +0 -114
  273. package/sites/blog/components/bl-contact-info.json +0 -54
  274. package/sites/blog/components/bl-cta.json +0 -68
  275. package/sites/blog/components/bl-footer.json +0 -122
  276. package/sites/blog/components/bl-masthead.json +0 -134
  277. package/sites/blog/components/bl-nav.json +0 -90
  278. package/sites/blog/components/bl-newsletter-cta.json +0 -134
  279. package/sites/blog/components/bl-post-card.json +0 -132
  280. package/sites/blog/components/bl-post-list.json +0 -10
  281. package/sites/blog/components/bl-prose.json +0 -89
  282. package/sites/blog/components/bl-section-header.json +0 -70
  283. package/sites/blog/components/bl-tag-pill.json +0 -29
  284. package/sites/blog/layouts/base.json +0 -22
  285. package/sites/blog/layouts/post.json +0 -15
  286. package/sites/blog/pages/[slug].json +0 -148
  287. package/sites/course/components/co-application.json +0 -225
  288. package/sites/course/components/co-cohort.json +0 -172
  289. package/sites/course/components/co-cta.json +0 -126
  290. package/sites/course/components/co-curriculum-accordion.json +0 -1476
  291. package/sites/course/components/co-faq.json +0 -524
  292. package/sites/course/components/co-footer.json +0 -195
  293. package/sites/course/components/co-hero.json +0 -475
  294. package/sites/course/components/co-instructor-card.json +0 -159
  295. package/sites/course/components/co-mentor.json +0 -65
  296. package/sites/course/components/co-module-card.json +0 -138
  297. package/sites/course/components/co-nav.json +0 -244
  298. package/sites/course/components/co-outcome-card.json +0 -84
  299. package/sites/course/components/co-outcomes.json +0 -248
  300. package/sites/course/components/co-pricing.json +0 -178
  301. package/sites/course/components/co-section-header.json +0 -74
  302. package/sites/course/components/co-testimonial-card.json +0 -109
  303. package/sites/course/layouts/base.json +0 -22
  304. package/sites/event/components/ev-agenda-tabs.json +0 -828
  305. package/sites/event/components/ev-cta.json +0 -126
  306. package/sites/event/components/ev-feature.json +0 -62
  307. package/sites/event/components/ev-footer.json +0 -197
  308. package/sites/event/components/ev-hero.json +0 -431
  309. package/sites/event/components/ev-nav.json +0 -186
  310. package/sites/event/components/ev-reason.json +0 -64
  311. package/sites/event/components/ev-savedate.json +0 -331
  312. package/sites/event/components/ev-section-header.json +0 -70
  313. package/sites/event/components/ev-session-row.json +0 -132
  314. package/sites/event/components/ev-speaker-card.json +0 -130
  315. package/sites/event/components/ev-sponsors.json +0 -131
  316. package/sites/event/components/ev-stat.json +0 -47
  317. package/sites/event/components/ev-ticket-card.json +0 -214
  318. package/sites/event/components/ev-venue.json +0 -86
  319. package/sites/event/layouts/base.json +0 -22
  320. package/sites/fitness-studio/components/fs-band.json +0 -149
  321. package/sites/fitness-studio/components/fs-booking.json +0 -147
  322. package/sites/fitness-studio/components/fs-class-card.json +0 -143
  323. package/sites/fitness-studio/components/fs-class-grid.json +0 -36
  324. package/sites/fitness-studio/components/fs-cta.json +0 -106
  325. package/sites/fitness-studio/components/fs-feature.json +0 -56
  326. package/sites/fitness-studio/components/fs-footer.json +0 -178
  327. package/sites/fitness-studio/components/fs-hero.json +0 -375
  328. package/sites/fitness-studio/components/fs-hours.json +0 -109
  329. package/sites/fitness-studio/components/fs-instructor-card.json +0 -136
  330. package/sites/fitness-studio/components/fs-intro.json +0 -294
  331. package/sites/fitness-studio/components/fs-modality.json +0 -171
  332. package/sites/fitness-studio/components/fs-nav.json +0 -128
  333. package/sites/fitness-studio/components/fs-pricing-card.json +0 -243
  334. package/sites/fitness-studio/components/fs-pricing-table.json +0 -458
  335. package/sites/fitness-studio/components/fs-review.json +0 -88
  336. package/sites/fitness-studio/components/fs-schedule.json +0 -1165
  337. package/sites/fitness-studio/components/fs-section-header.json +0 -77
  338. package/sites/fitness-studio/layouts/base.json +0 -22
  339. package/sites/home-services/components/hs-callbar.json +0 -72
  340. package/sites/home-services/components/hs-cta.json +0 -184
  341. package/sites/home-services/components/hs-feature.json +0 -62
  342. package/sites/home-services/components/hs-footer.json +0 -232
  343. package/sites/home-services/components/hs-gallery.json +0 -104
  344. package/sites/home-services/components/hs-hero.json +0 -446
  345. package/sites/home-services/components/hs-intro.json +0 -122
  346. package/sites/home-services/components/hs-nav.json +0 -278
  347. package/sites/home-services/components/hs-reservation.json +0 -225
  348. package/sites/home-services/components/hs-review.json +0 -114
  349. package/sites/home-services/components/hs-section-header.json +0 -70
  350. package/sites/home-services/components/hs-service-card.json +0 -89
  351. package/sites/home-services/components/hs-stat.json +0 -54
  352. package/sites/home-services/components/hs-step.json +0 -80
  353. package/sites/home-services/components/hs-trust-bar.json +0 -256
  354. package/sites/home-services/layouts/base.json +0 -24
  355. package/sites/museum/components/mu-band.json +0 -92
  356. package/sites/museum/components/mu-cta.json +0 -101
  357. package/sites/museum/components/mu-exhibition-card.json +0 -191
  358. package/sites/museum/components/mu-exhibition-row.json +0 -237
  359. package/sites/museum/components/mu-fact.json +0 -64
  360. package/sites/museum/components/mu-footer.json +0 -256
  361. package/sites/museum/components/mu-hero.json +0 -236
  362. package/sites/museum/components/mu-more.json +0 -63
  363. package/sites/museum/components/mu-oculus.json +0 -44
  364. package/sites/museum/components/mu-pagehead.json +0 -105
  365. package/sites/museum/components/mu-quote.json +0 -49
  366. package/sites/museum/layouts/ar.json +0 -29
  367. package/sites/museum/layouts/base.json +0 -329
  368. package/sites/museum/layouts/fr-ca.json +0 -28
  369. package/sites/museum/pages/about.json +0 -378
  370. package/sites/museum/pages/ar/about.json +0 -314
  371. package/sites/museum/pages/ar/exhibitions/[slug].json +0 -211
  372. package/sites/museum/pages/ar/exhibitions/index.json +0 -103
  373. package/sites/museum/pages/ar/index.json +0 -246
  374. package/sites/museum/pages/ar/visit.json +0 -327
  375. package/sites/museum/pages/exhibitions/[slug].json +0 -200
  376. package/sites/museum/pages/exhibitions/index.json +0 -93
  377. package/sites/museum/pages/fr-ca/a-propos.json +0 -313
  378. package/sites/museum/pages/fr-ca/expositions/[slug].json +0 -215
  379. package/sites/museum/pages/fr-ca/expositions/index.json +0 -104
  380. package/sites/museum/pages/fr-ca/index.json +0 -246
  381. package/sites/museum/pages/fr-ca/visite.json +0 -328
  382. package/sites/museum/pages/index.json +0 -236
  383. package/sites/museum/pages/visit.json +0 -317
  384. package/sites/nonprofit/components/np-contact-form.json +0 -162
  385. package/sites/nonprofit/components/np-contact-info.json +0 -159
  386. package/sites/nonprofit/components/np-cta.json +0 -203
  387. package/sites/nonprofit/components/np-donate-tier.json +0 -116
  388. package/sites/nonprofit/components/np-feature.json +0 -57
  389. package/sites/nonprofit/components/np-footer.json +0 -257
  390. package/sites/nonprofit/components/np-hero.json +0 -360
  391. package/sites/nonprofit/components/np-impact-band.json +0 -108
  392. package/sites/nonprofit/components/np-intro.json +0 -166
  393. package/sites/nonprofit/components/np-nav.json +0 -216
  394. package/sites/nonprofit/components/np-program-card.json +0 -129
  395. package/sites/nonprofit/components/np-section-header.json +0 -79
  396. package/sites/nonprofit/components/np-stat.json +0 -69
  397. package/sites/nonprofit/components/np-step.json +0 -84
  398. package/sites/nonprofit/components/np-team-member.json +0 -74
  399. package/sites/nonprofit/components/np-testimonial.json +0 -169
  400. package/sites/nonprofit/layouts/base.json +0 -22
  401. package/sites/portfolio/components/pv-about-split.json +0 -71
  402. package/sites/portfolio/components/pv-category-pill.json +0 -25
  403. package/sites/portfolio/components/pv-contact-form.json +0 -126
  404. package/sites/portfolio/components/pv-cta.json +0 -80
  405. package/sites/portfolio/components/pv-feature.json +0 -48
  406. package/sites/portfolio/components/pv-footer.json +0 -167
  407. package/sites/portfolio/components/pv-gallery.json +0 -50
  408. package/sites/portfolio/components/pv-hero.json +0 -139
  409. package/sites/portfolio/components/pv-nav.json +0 -100
  410. package/sites/portfolio/components/pv-project-card.json +0 -160
  411. package/sites/portfolio/components/pv-project-grid.json +0 -30
  412. package/sites/portfolio/components/pv-section-header.json +0 -90
  413. package/sites/portfolio/layouts/base.json +0 -22
  414. package/sites/portfolio/pages/[slug].json +0 -260
  415. package/sites/professional-firm/components/pf-article-header.json +0 -93
  416. package/sites/professional-firm/components/pf-contact-form.json +0 -146
  417. package/sites/professional-firm/components/pf-contact-info.json +0 -147
  418. package/sites/professional-firm/components/pf-cta.json +0 -86
  419. package/sites/professional-firm/components/pf-feature.json +0 -52
  420. package/sites/professional-firm/components/pf-footer.json +0 -231
  421. package/sites/professional-firm/components/pf-hero.json +0 -174
  422. package/sites/professional-firm/components/pf-insight-row.json +0 -144
  423. package/sites/professional-firm/components/pf-intro.json +0 -93
  424. package/sites/professional-firm/components/pf-logo-bar.json +0 -113
  425. package/sites/professional-firm/components/pf-nav.json +0 -135
  426. package/sites/professional-firm/components/pf-section-header.json +0 -77
  427. package/sites/professional-firm/components/pf-service-row.json +0 -104
  428. package/sites/professional-firm/components/pf-statband.json +0 -183
  429. package/sites/professional-firm/components/pf-team-member.json +0 -75
  430. package/sites/professional-firm/layouts/article.json +0 -130
  431. package/sites/professional-firm/layouts/base.json +0 -22
  432. package/sites/professional-firm/pages/insights/[slug].json +0 -129
  433. package/sites/real-estate/components/re-agent-band.json +0 -240
  434. package/sites/real-estate/components/re-agent-card.json +0 -93
  435. package/sites/real-estate/components/re-contact-form.json +0 -181
  436. package/sites/real-estate/components/re-cta.json +0 -128
  437. package/sites/real-estate/components/re-detail-row.json +0 -26
  438. package/sites/real-estate/components/re-feature.json +0 -57
  439. package/sites/real-estate/components/re-footer.json +0 -291
  440. package/sites/real-estate/components/re-hero.json +0 -536
  441. package/sites/real-estate/components/re-intro.json +0 -60
  442. package/sites/real-estate/components/re-listing-card.json +0 -286
  443. package/sites/real-estate/components/re-listings-filter.json +0 -454
  444. package/sites/real-estate/components/re-nav.json +0 -216
  445. package/sites/real-estate/components/re-neighborhood.json +0 -135
  446. package/sites/real-estate/components/re-section-header.json +0 -69
  447. package/sites/real-estate/components/re-stat.json +0 -37
  448. package/sites/real-estate/components/re-step.json +0 -58
  449. package/sites/real-estate/components/re-testimonial.json +0 -91
  450. package/sites/real-estate/layouts/base.json +0 -22
  451. package/sites/real-estate/pages/[slug].json +0 -629
  452. package/sites/restaurant/components/bit-cta.json +0 -140
  453. package/sites/restaurant/components/bit-feature.json +0 -61
  454. package/sites/restaurant/components/bit-footer.json +0 -191
  455. package/sites/restaurant/components/bit-gallery.json +0 -74
  456. package/sites/restaurant/components/bit-hero.json +0 -253
  457. package/sites/restaurant/components/bit-hours.json +0 -183
  458. package/sites/restaurant/components/bit-intro.json +0 -96
  459. package/sites/restaurant/components/bit-menu-group.json +0 -74
  460. package/sites/restaurant/components/bit-menu-item.json +0 -72
  461. package/sites/restaurant/components/bit-nav.json +0 -214
  462. package/sites/restaurant/components/bit-reservation.json +0 -155
  463. package/sites/restaurant/components/bit-review.json +0 -84
  464. package/sites/restaurant/components/bit-section-header.json +0 -98
  465. package/sites/restaurant/layouts/base.json +0 -22
  466. package/sites/saas/components/sa-check-item.json +0 -40
  467. package/sites/saas/components/sa-contact-form.json +0 -153
  468. package/sites/saas/components/sa-cta.json +0 -102
  469. package/sites/saas/components/sa-faq.json +0 -413
  470. package/sites/saas/components/sa-feature-card.json +0 -69
  471. package/sites/saas/components/sa-feature-split.json +0 -60
  472. package/sites/saas/components/sa-footer.json +0 -145
  473. package/sites/saas/components/sa-hero.json +0 -277
  474. package/sites/saas/components/sa-logo-cloud.json +0 -119
  475. package/sites/saas/components/sa-nav.json +0 -138
  476. package/sites/saas/components/sa-pricing.json +0 -428
  477. package/sites/saas/components/sa-section-header.json +0 -55
  478. package/sites/saas/components/sa-stat.json +0 -44
  479. package/sites/saas/components/sa-testimonial-card.json +0 -57
  480. package/sites/saas/layouts/base.json +0 -22
  481. package/sites/shop/components/shp-badge.json +0 -18
  482. package/sites/shop/components/shp-category-tile.json +0 -104
  483. package/sites/shop/components/shp-contact-form.json +0 -156
  484. package/sites/shop/components/shp-cta.json +0 -121
  485. package/sites/shop/components/shp-feature.json +0 -60
  486. package/sites/shop/components/shp-footer.json +0 -411
  487. package/sites/shop/components/shp-hero.json +0 -395
  488. package/sites/shop/components/shp-intro.json +0 -59
  489. package/sites/shop/components/shp-nav.json +0 -358
  490. package/sites/shop/components/shp-newsletter.json +0 -166
  491. package/sites/shop/components/shp-product-card.json +0 -238
  492. package/sites/shop/components/shp-product-filter.json +0 -366
  493. package/sites/shop/components/shp-review.json +0 -54
  494. package/sites/shop/components/shp-section-header.json +0 -75
  495. package/sites/shop/components/shp-service.json +0 -83
  496. package/sites/shop/components/shp-stat.json +0 -37
  497. package/sites/shop/components/shp-trust.json +0 -58
  498. package/sites/shop/components/shp-visit-info.json +0 -132
  499. package/sites/shop/layouts/base.json +0 -22
  500. package/sites/shop/pages/products/[sku].json +0 -482
@@ -0,0 +1,227 @@
1
+ /- kdl-version 2
2
+ $elements {
3
+ - (ref)"../components/mu-footer.jxn"
4
+ }
5
+
6
+ div {
7
+ state {
8
+ brand Atrium
9
+ skipLabel "Skip to content"
10
+ railNote "City Museum of Art & History · Open today 10:00–18:00"
11
+ languageNavLabel Language
12
+ mainNavLabel Main
13
+ navExhibitions Exhibitions
14
+ navVisit Visit
15
+ navAbout About
16
+ homeHref "/"
17
+ exhibitionsHref "/exhibitions/"
18
+ visitHref "/visit/"
19
+ aboutHref "/about/"
20
+ footerTagline "A city museum in a glass hall: four centuries of the harbour, its makers and its maps, held in trust for everyone who lives here."
21
+ footerVisitLabel "Find us"
22
+ footerAddress "2 Quai des Écluses, Old Harbour"
23
+ footerHours "Tuesday to Sunday, 10:00–18:00. Closed Mondays."
24
+ footerReadLabel Read
25
+ footerExhibitionsLink Exhibitions
26
+ footerVisitLink "Plan your visit"
27
+ footerAboutLink "About the museum"
28
+ footerContactLabel Contact
29
+ footerEmail bonjour@atrium.example
30
+ footerPhone "+1 555 0140"
31
+ footerLegal "© 2026 Atrium — City Museum of Art & History"
32
+ footerCredit "A civic museum, free to enter, in three languages."
33
+ }
34
+ style minHeight="100vh" display=flex flexDirection=column backgroundColor="var(--color-chalk)"
35
+ a href="#main" "${state.skipLabel}" {
36
+ style {
37
+ position absolute
38
+ insetBlockStart "0.5rem"
39
+ insetInlineStart "0.5rem"
40
+ zIndex "100"
41
+ backgroundColor "var(--color-ink)"
42
+ color "var(--color-chalk)"
43
+ fontFamily "var(--font-label)"
44
+ fontSize "0.7rem"
45
+ letterSpacing "var(--label-tracking)"
46
+ textTransform "var(--label-case)"
47
+ textDecoration none
48
+ padding "0.6rem 1rem"
49
+ transform "translateY(-250%)"
50
+ :focus transform="translateY(0)"
51
+ }
52
+ }
53
+ header {
54
+ style {
55
+ position sticky
56
+ insetBlockStart "0"
57
+ zIndex "50"
58
+ backgroundColor "var(--color-card)"
59
+ borderBlockEnd "2px solid var(--color-ink)"
60
+ }
61
+ div {
62
+ style backgroundColor="var(--color-ink)" color="var(--color-chalk)"
63
+ div {
64
+ style {
65
+ maxWidth "var(--max-width)"
66
+ marginInline auto
67
+ paddingInline "var(--gutter)"
68
+ minHeight "2.5rem"
69
+ display flex
70
+ alignItems stretch
71
+ justifyContent space-between
72
+ gap "1.5rem"
73
+ fontFamily "var(--font-label)"
74
+ fontSize "0.66rem"
75
+ letterSpacing "var(--label-tracking)"
76
+ textTransform "var(--label-case)"
77
+ }
78
+ p "${state.railNote}" {
79
+ style margin="0" alignSelf=center color="rgba(231, 227, 218, 0.66)" {
80
+ @--md display=none
81
+ }
82
+ }
83
+ nav aria-label="${state.languageNavLabel}" {
84
+ style display=flex alignItems=stretch marginInlineStart=auto
85
+ .children {
86
+ $array items=(ref)"#/state/$page/alternates" {
87
+ a .lang="${item.code}" dir="${item.dir}" href="${item.url}" hreflang="${item.code}" aria-current="${item.current ? 'page' : 'false'}" "${item.label}" {
88
+ style {
89
+ display inline-flex
90
+ alignItems center
91
+ paddingInline "0.85rem"
92
+ paddingBlock "0.7rem"
93
+ textDecoration none
94
+ whiteSpace nowrap
95
+ transition "color 0.15s, background-color 0.15s"
96
+ color "${item.current ? 'var(--color-chalk)' : 'rgba(231, 227, 218, 0.6)'}"
97
+ backgroundColor "${item.current ? 'rgba(231, 227, 218, 0.1)' : 'transparent'}"
98
+ boxShadow "${item.current ? 'inset 0 -2px 0 0 var(--color-chalk)' : 'none'}"
99
+ :hover {
100
+ color "var(--color-chalk)"
101
+ backgroundColor "rgba(231, 227, 218, 0.1)"
102
+ }
103
+ }
104
+ }
105
+ }
106
+ }
107
+ }
108
+ }
109
+ }
110
+ div {
111
+ style {
112
+ maxWidth "var(--max-width)"
113
+ marginInline auto
114
+ paddingInline "var(--gutter)"
115
+ minHeight "4.6rem"
116
+ display flex
117
+ alignItems center
118
+ justifyContent space-between
119
+ gap "1.5rem"
120
+ }
121
+ a href="${state.homeHref}" {
122
+ style {
123
+ display inline-flex
124
+ alignItems center
125
+ gap "0.7rem"
126
+ textDecoration none
127
+ color "var(--color-ink)"
128
+ }
129
+ span aria-hidden="true" {
130
+ style {
131
+ width "1.05rem"
132
+ height "1.05rem"
133
+ borderRadius "50%"
134
+ backgroundColor "var(--color-pigment)"
135
+ flex "0 0 auto"
136
+ }
137
+ }
138
+ span "${state.brand}" {
139
+ style {
140
+ fontFamily "var(--font-display)"
141
+ fontSize "1.55rem"
142
+ fontWeight "700"
143
+ lineHeight "1"
144
+ letterSpacing "var(--display-tracking)"
145
+ }
146
+ }
147
+ }
148
+ nav aria-label="${state.mainNavLabel}" {
149
+ style {
150
+ display flex
151
+ alignItems center
152
+ gap "1.9rem"
153
+ fontFamily "var(--font-label)"
154
+ fontSize "0.7rem"
155
+ letterSpacing "var(--label-tracking)"
156
+ textTransform "var(--label-case)"
157
+ @--sm gap="1.1rem"
158
+ }
159
+ a href="${state.exhibitionsHref}" "${state.navExhibitions}" {
160
+ style {
161
+ color "var(--color-ink)"
162
+ textDecoration none
163
+ paddingBlock "0.35rem"
164
+ borderBlockEnd "2px solid transparent"
165
+ transition "color 0.15s, border-color 0.15s"
166
+ :hover {
167
+ color "var(--color-pigment)"
168
+ borderBlockEnd "2px solid var(--color-pigment)"
169
+ }
170
+ }
171
+ }
172
+ a href="${state.visitHref}" "${state.navVisit}" {
173
+ style {
174
+ color "var(--color-ink)"
175
+ textDecoration none
176
+ paddingBlock "0.35rem"
177
+ borderBlockEnd "2px solid transparent"
178
+ transition "color 0.15s, border-color 0.15s"
179
+ :hover {
180
+ color "var(--color-pigment)"
181
+ borderBlockEnd "2px solid var(--color-pigment)"
182
+ }
183
+ }
184
+ }
185
+ a href="${state.aboutHref}" "${state.navAbout}" {
186
+ style {
187
+ color "var(--color-ink)"
188
+ textDecoration none
189
+ paddingBlock "0.35rem"
190
+ borderBlockEnd "2px solid transparent"
191
+ @--sm display=none
192
+ transition "color 0.15s, border-color 0.15s"
193
+ :hover {
194
+ color "var(--color-pigment)"
195
+ borderBlockEnd "2px solid var(--color-pigment)"
196
+ }
197
+ }
198
+ }
199
+ }
200
+ }
201
+ }
202
+ main .id=main {
203
+ style flex="1"
204
+ slot
205
+ }
206
+ mu-footer {
207
+ $props {
208
+ brand "${state.brand}"
209
+ tagline "${state.footerTagline}"
210
+ visitLabel "${state.footerVisitLabel}"
211
+ address "${state.footerAddress}"
212
+ hours "${state.footerHours}"
213
+ readLabel "${state.footerReadLabel}"
214
+ exhibitionsLink "${state.footerExhibitionsLink}"
215
+ visitLink "${state.footerVisitLink}"
216
+ aboutLink "${state.footerAboutLink}"
217
+ contactLabel "${state.footerContactLabel}"
218
+ email "${state.footerEmail}"
219
+ phone "${state.footerPhone}"
220
+ legal "${state.footerLegal}"
221
+ credit "${state.footerCredit}"
222
+ exhibitionsHref "${state.exhibitionsHref}"
223
+ visitHref "${state.visitHref}"
224
+ aboutHref "${state.aboutHref}"
225
+ }
226
+ }
227
+ }
@@ -0,0 +1,30 @@
1
+ /- kdl-version 2
2
+ $layout "./layouts/base.jxn"
3
+
4
+ $element {
5
+ state {
6
+ skipLabel "Aller au contenu"
7
+ railNote "Musée municipal d'art et d'histoire · Ouvert aujourd'hui de 10 h à 18 h"
8
+ languageNavLabel Langue
9
+ mainNavLabel Principal
10
+ navExhibitions Expositions
11
+ navVisit Visite
12
+ navAbout "À propos"
13
+ homeHref "/fr-ca/"
14
+ exhibitionsHref "/fr-ca/expositions/"
15
+ visitHref "/fr-ca/visite/"
16
+ aboutHref "/fr-ca/a-propos/"
17
+ footerTagline "Un musée municipal sous une halle de verre : quatre siècles de port, de métiers et de cartes, gardés en fiducie pour toutes celles et ceux qui vivent ici."
18
+ footerVisitLabel "Nous trouver"
19
+ footerAddress "2, quai des Écluses, Vieux-Port"
20
+ footerHours "Du mardi au dimanche, de 10 h à 18 h. Fermé le lundi."
21
+ footerReadLabel "À lire"
22
+ footerExhibitionsLink Expositions
23
+ footerVisitLink "Préparer sa visite"
24
+ footerAboutLink "À propos du musée"
25
+ footerContactLabel "Nous joindre"
26
+ footerLegal "© 2026 Atrium — Musée municipal d'art et d'histoire"
27
+ footerCredit "Un musée public, à entrée libre, en trois langues."
28
+ }
29
+ slot
30
+ }
@@ -9,10 +9,10 @@
9
9
  "dev": "jx dev"
10
10
  },
11
11
  "dependencies": {
12
- "@jxsuite/parser": "^4.3.3"
12
+ "@jxsuite/parser": "^5.0.0"
13
13
  },
14
14
  "devDependencies": {
15
- "@jxsuite/compiler": "^8.5.0",
16
- "@jxsuite/runtime": "^6.2.2"
15
+ "@jxsuite/compiler": "^8.7.0",
16
+ "@jxsuite/runtime": "^7.0.0"
17
17
  }
18
18
  }
@@ -0,0 +1,228 @@
1
+ /- kdl-version 2
2
+
3
+ $element .title="About the museum — Atrium" .description="Atrium is the city's museum of art and history: a glass hall over the old customs house, free to enter, run by the city and its readers since 1897." {
4
+ state {
5
+ catalogued {
6
+ $expression {
7
+ operator call
8
+ target (ref)"window#/Intl/formatNumber"
9
+ value {
10
+ - 0.94
11
+ - #null
12
+ - style=percent
13
+ }
14
+ }
15
+ }
16
+ archive {
17
+ $expression {
18
+ operator call
19
+ target (ref)"window#/Intl/formatNumber"
20
+ value {
21
+ - 1240
22
+ - #null
23
+ - style=unit unit=meter unitDisplay=long
24
+ }
25
+ }
26
+ }
27
+ staff {
28
+ $expression {
29
+ operator call
30
+ target (ref)"window#/Intl/formatNumber"
31
+ value {
32
+ - 61
33
+ }
34
+ }
35
+ }
36
+ languages {
37
+ $expression {
38
+ operator call
39
+ target (ref)"window#/Intl/formatList"
40
+ value {
41
+ - English French Arabic
42
+ }
43
+ }
44
+ }
45
+ }
46
+ mu-pagehead {
47
+ $props {
48
+ kicker About
49
+ title "A museum that argues with itself"
50
+ standfirst "Atrium was founded by 240 households who each put in what they could and demanded, in writing, that entry stay free. It has been kept that way for a hundred and twenty-nine years, through two rebuildings and one fire."
51
+ metaLabel "Reading room"
52
+ metaValue "Second floor, no appointment needed"
53
+ }
54
+ }
55
+ mu-band {
56
+ $props index="01" label="The building" tone=chalk
57
+ div {
58
+ style {
59
+ display grid
60
+ gridTemplateColumns "minmax(0, 1.4fr) minmax(0, 0.8fr)"
61
+ columnGap "clamp(2rem, 5vw, 4rem)"
62
+ rowGap "1.25rem"
63
+ @--md gridTemplateColumns="minmax(0, 1fr)"
64
+ alignItems start
65
+ }
66
+ div {
67
+ style maxWidth="var(--measure)"
68
+ p "The museum began in a room above the customs house, which it outgrew in nineteen years. The glass hall that replaced it in 1916 was built over the customs house rather than instead of it: the old stone walls are still standing inside, holding up nothing, and the tour begins by walking between them." {
69
+ style margin="0" lineHeight="1.75"
70
+ }
71
+ p "The roof is the reason people photograph the building and the reason the conservators dislike it. Every object on the ground floor is placed by how much light it can take, which is why the map cabinet sits in the darkest corner and the salt pan sits outside in the rain." {
72
+ style margin="1.1rem 0 0" lineHeight="1.75"
73
+ }
74
+ p "Nothing here is a copy. Where the museum shows a reproduction — three of the maps are too fragile to hang — the label says so in the first line, in the same size type as the title." {
75
+ style margin="1.1rem 0 0" lineHeight="1.75"
76
+ }
77
+ p "Where the museum does not know something, the label says that too. Roughly one object in nine has no attributed maker, and the catalogue records the gap rather than a guess." {
78
+ style margin="1.1rem 0 0" lineHeight="1.75"
79
+ }
80
+ }
81
+ mu-oculus {
82
+ $props size="20rem" tone=card
83
+ }
84
+ }
85
+ }
86
+ mu-band {
87
+ $props index="02" label="What we hold" tone=card
88
+ div {
89
+ style {
90
+ display grid
91
+ gridTemplateColumns "repeat(2, minmax(0, 1fr))"
92
+ columnGap "clamp(2rem, 5vw, 4rem)"
93
+ @--md gridTemplateColumns="minmax(0, 1fr)"
94
+ }
95
+ div {
96
+ mu-fact {
97
+ $props {
98
+ term Catalogued
99
+ value "${state.catalogued}"
100
+ note "Of everything accessioned. The remainder is mostly the 2019 workshop bequest."
101
+ }
102
+ }
103
+ mu-fact {
104
+ $props {
105
+ term Archive
106
+ value "${state.archive}"
107
+ note "Of shelved paper: ledgers, survey notebooks, and workshop correspondence."
108
+ }
109
+ }
110
+ }
111
+ div {
112
+ mu-fact {
113
+ $props {
114
+ term Staff
115
+ value "${state.staff}"
116
+ note "Curators, conservators, front-of-house and the two people who keep the roof clean."
117
+ }
118
+ }
119
+ mu-fact {
120
+ $props {
121
+ term "Labels in"
122
+ value "${state.languages}"
123
+ note "Every wall label, every room, with no abridged version for any of the three."
124
+ }
125
+ }
126
+ }
127
+ }
128
+ }
129
+ mu-band {
130
+ $props index="03" label="Three languages" tone=chalk
131
+ div {
132
+ style {
133
+ display grid
134
+ gridTemplateColumns "minmax(0, 1fr) minmax(0, 0.85fr)"
135
+ columnGap "clamp(2rem, 5vw, 4rem)"
136
+ alignItems start
137
+ @--md gridTemplateColumns="minmax(0, 1fr)" rowGap="2rem"
138
+ }
139
+ div {
140
+ style maxWidth="var(--measure)"
141
+ p "A third of this city reads French at home and a growing share reads Arabic, so the museum is written three times over rather than once with translations bolted on. Each language has its own pages, its own wall text and its own reading of the collection — the Arabic route through Gallery 2 is not the English one reversed, it is a different argument by a different curator." {
142
+ style margin="0" lineHeight="1.75"
143
+ }
144
+ p "Every page carries the same switch, and it lists only the languages that page actually exists in. If a language is missing from the switch, the page has not been written in it yet — that is a commitment we would rather show than hide." {
145
+ style margin="1.1rem 0 0" lineHeight="1.75"
146
+ }
147
+ }
148
+ div {
149
+ style {
150
+ border "2px solid var(--color-ink)"
151
+ backgroundColor "var(--color-card)"
152
+ padding "clamp(1.25rem, 3vw, 1.9rem)"
153
+ }
154
+ p "This page, in every language it exists in" {
155
+ style {
156
+ margin "0 0 1.1rem"
157
+ fontFamily "var(--font-label)"
158
+ fontSize "0.66rem"
159
+ letterSpacing "var(--label-tracking)"
160
+ textTransform "var(--label-case)"
161
+ color "var(--color-muted)"
162
+ }
163
+ }
164
+ ul {
165
+ style listStyle=none margin="0" padding="0" display=grid gap="0.55rem"
166
+ .children {
167
+ $array items=(ref)"#/state/$page/alternates" {
168
+ li {
169
+ a .lang="${item.code}" dir="${item.dir}" href="${item.url}" hreflang="${item.code}" aria-current="${item.current ? 'page' : 'false'}" {
170
+ style {
171
+ display flex
172
+ alignItems baseline
173
+ gap "0.7rem"
174
+ textDecoration none
175
+ paddingBlock "0.35rem"
176
+ borderBlockEnd "1px solid var(--color-hairline)"
177
+ color "${item.current ? 'var(--color-muted)' : 'var(--color-pigment)'}"
178
+ :hover color="var(--color-ink)"
179
+ }
180
+ span "${item.code}" {
181
+ style {
182
+ fontFamily "var(--font-label)"
183
+ fontSize "0.64rem"
184
+ letterSpacing "var(--label-tracking)"
185
+ textTransform "var(--label-case)"
186
+ opacity "0.7"
187
+ }
188
+ }
189
+ span "${item.label}" {
190
+ style fontSize="1.02rem"
191
+ }
192
+ span "You are here" {
193
+ style {
194
+ marginInlineStart auto
195
+ fontFamily "var(--font-label)"
196
+ fontSize "0.62rem"
197
+ letterSpacing "var(--label-tracking)"
198
+ textTransform "var(--label-case)"
199
+ display "${item.current ? 'inline' : 'none'}"
200
+ }
201
+ }
202
+ }
203
+ }
204
+ }
205
+ }
206
+ }
207
+ }
208
+ }
209
+ }
210
+ mu-band {
211
+ $props index="04" label="In the founders' words" tone=ink
212
+ mu-quote {
213
+ $props {
214
+ quote "Let it be free at the door, or let it be something other than ours."
215
+ attribution "Subscription minute book, 4 November 1897"
216
+ }
217
+ }
218
+ }
219
+ mu-cta {
220
+ $props {
221
+ kicker "Come in"
222
+ heading "The reading room is open to anyone with a question."
223
+ text "Second floor, above the map cabinet. No appointment to read; ask at the desk to handle."
224
+ label "Plan your visit"
225
+ href "/visit/"
226
+ }
227
+ }
228
+ }