@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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jxsuite/starters",
3
- "version": "3.3.2",
3
+ "version": "3.5.0",
4
4
  "description": "Starter site templates for new Jx projects",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -26,12 +26,12 @@
26
26
  "test:coverage": "bun test --isolate --coverage"
27
27
  },
28
28
  "dependencies": {
29
- "@jxsuite/protocol": "^6.2.4"
29
+ "@jxsuite/protocol": "^6.3.0"
30
30
  },
31
31
  "devDependencies": {
32
- "@jxsuite/parser": "^4.3.2",
33
- "@jxsuite/runtime": "^6.2.1",
34
- "@jxsuite/schema": "^5.4.0",
32
+ "@jxsuite/parser": "^4.3.4",
33
+ "@jxsuite/runtime": "^6.3.0",
34
+ "@jxsuite/schema": "^5.6.0",
35
35
  "ajv": "^8.20.0",
36
36
  "ajv-formats": "^3.0.1"
37
37
  }
@@ -0,0 +1,64 @@
1
+ /- kdl-version 2
2
+
3
+ bl-author-bio {
4
+ state {
5
+ name ""
6
+ role "Writer & editor"
7
+ bio ""
8
+ avatar type=string format=image default=""
9
+ }
10
+ style {
11
+ display block
12
+ borderTop "1.5px solid var(--color-rule)"
13
+ borderBottom "1.5px solid var(--color-rule)"
14
+ padding "1.75rem 0"
15
+ }
16
+ div {
17
+ style display=flex gap="1.5rem" alignItems=center {
18
+ @--sm flexDirection=column textAlign=center
19
+ }
20
+ img src="${state.avatar}" alt="${state.name}" loading=lazy {
21
+ style {
22
+ display "${state.avatar ? 'block' : 'none'}"
23
+ width "84px"
24
+ height "84px"
25
+ borderRadius "999px"
26
+ objectFit cover
27
+ flexShrink "0"
28
+ filter "grayscale(1)"
29
+ }
30
+ }
31
+ div {
32
+ div "Written by · ${state.role}" {
33
+ style {
34
+ fontFamily "var(--font-body)"
35
+ textTransform uppercase
36
+ letterSpacing "0.16em"
37
+ fontSize "0.7rem"
38
+ fontWeight "600"
39
+ color "var(--color-primary)"
40
+ marginBottom "0.4rem"
41
+ }
42
+ }
43
+ div "${state.name}" {
44
+ style {
45
+ fontFamily "var(--font-heading)"
46
+ fontSize "1.5rem"
47
+ fontWeight "700"
48
+ letterSpacing "-0.01em"
49
+ margin "0 0 0.4rem"
50
+ }
51
+ }
52
+ p "${state.bio}" {
53
+ style {
54
+ margin "0"
55
+ fontFamily "var(--font-heading)"
56
+ fontStyle italic
57
+ color "var(--color-text-muted)"
58
+ fontSize "1.1rem"
59
+ lineHeight "1.6"
60
+ }
61
+ }
62
+ }
63
+ }
64
+ }
@@ -0,0 +1,77 @@
1
+ /- kdl-version 2
2
+
3
+ bl-contact-form {
4
+ state {
5
+ heading "Send a note"
6
+ cta "Send note"
7
+ note "This is a demo form. Wire it to your email provider or inbox in components/bl-contact-form.json."
8
+ }
9
+ style display=block
10
+ h3 "${state.heading}" {
11
+ style {
12
+ fontFamily "var(--font-heading)"
13
+ fontSize "1.6rem"
14
+ fontWeight "600"
15
+ margin "0 0 1.25rem"
16
+ }
17
+ }
18
+ form action="#" method=post {
19
+ style display=grid gap="1rem" alignContent=start
20
+ input type=text name=name placeholder="Your name" required="true" aria-label="Your name" {
21
+ style {
22
+ width "100%"
23
+ padding "0.75rem 0.9rem"
24
+ border "1px solid var(--color-border)"
25
+ borderRadius "var(--radius)"
26
+ fontSize "1rem"
27
+ fontFamily inherit
28
+ backgroundColor "var(--color-bg-white)"
29
+ }
30
+ }
31
+ input type=email name=email placeholder="Email address" required="true" aria-label="Email address" {
32
+ style {
33
+ width "100%"
34
+ padding "0.75rem 0.9rem"
35
+ border "1px solid var(--color-border)"
36
+ borderRadius "var(--radius)"
37
+ fontSize "1rem"
38
+ fontFamily inherit
39
+ backgroundColor "var(--color-bg-white)"
40
+ }
41
+ }
42
+ textarea name=message rows="5" placeholder="What's on your mind?" aria-label=Message {
43
+ style {
44
+ width "100%"
45
+ padding "0.75rem 0.9rem"
46
+ border "1px solid var(--color-border)"
47
+ borderRadius "var(--radius)"
48
+ fontSize "1rem"
49
+ fontFamily inherit
50
+ backgroundColor "var(--color-bg-white)"
51
+ }
52
+ }
53
+ button type=submit "${state.cta}" {
54
+ style {
55
+ backgroundColor "var(--color-primary)"
56
+ color "var(--color-text-white)"
57
+ padding "0.85rem 1.5rem"
58
+ border none
59
+ borderRadius "var(--radius)"
60
+ fontSize "1rem"
61
+ fontWeight "600"
62
+ cursor pointer
63
+ justifySelf start
64
+ transition "background-color 0.15s"
65
+ :hover backgroundColor="var(--color-primary-hover)"
66
+ }
67
+ }
68
+ p "${state.note}" {
69
+ style {
70
+ display "${state.note ? 'block' : 'none'}"
71
+ fontSize "0.85rem"
72
+ color "var(--color-text-muted)"
73
+ margin "0"
74
+ }
75
+ }
76
+ }
77
+ }
@@ -0,0 +1,32 @@
1
+ /- kdl-version 2
2
+
3
+ bl-contact-info {
4
+ state {
5
+ heading Elsewhere
6
+ intro "For letters, pitches, or corrections:"
7
+ email hello@thelongfield.co
8
+ note "New essays publish most Sundays. Replies to the newsletter come straight to me."
9
+ }
10
+ style {
11
+ display block
12
+ padding "2rem"
13
+ backgroundColor "var(--color-bg-cream)"
14
+ border "1px solid var(--color-border)"
15
+ borderRadius "var(--radius)"
16
+ }
17
+ h3 "${state.heading}" {
18
+ style fontFamily="var(--font-heading)" fontSize="1.4rem" fontWeight="600" margin="0 0 1rem"
19
+ }
20
+ p "${state.intro}" {
21
+ style margin="0 0 0.5rem" color="var(--color-text-muted)"
22
+ }
23
+ p {
24
+ style margin="0 0 1.25rem"
25
+ a href="mailto:${state.email}" "${state.email}" {
26
+ style color="var(--color-primary)" textDecoration=none fontWeight="600"
27
+ }
28
+ }
29
+ p "${state.note}" {
30
+ style margin="0" color="var(--color-text-muted)"
31
+ }
32
+ }
@@ -0,0 +1,52 @@
1
+ /- kdl-version 2
2
+
3
+ bl-cta {
4
+ state heading="" text="" cta=Subscribe ctaHref="/contact/"
5
+ style {
6
+ display block
7
+ backgroundColor "var(--color-bg-dark)"
8
+ color "var(--color-text-white)"
9
+ padding "clamp(3.5rem, 8vw, 5.5rem) 1.5rem"
10
+ textAlign center
11
+ }
12
+ div {
13
+ style maxWidth="var(--max-width-narrow)" margin="0 auto"
14
+ h2 "${state.heading}" {
15
+ style {
16
+ fontFamily "var(--font-heading)"
17
+ fontSize "clamp(2rem, 5vw, 3.25rem)"
18
+ fontWeight "700"
19
+ lineHeight "1.05"
20
+ letterSpacing "-0.02em"
21
+ margin "0 0 1rem"
22
+ }
23
+ }
24
+ p "${state.text}" {
25
+ style {
26
+ fontFamily "var(--font-heading)"
27
+ fontStyle italic
28
+ fontSize "1.2rem"
29
+ lineHeight "1.6"
30
+ opacity "0.8"
31
+ margin "0 auto 2rem"
32
+ maxWidth "46ch"
33
+ }
34
+ }
35
+ a href="${state.ctaHref}" "${state.cta} →" {
36
+ style {
37
+ display inline-block
38
+ color "var(--color-text-white)"
39
+ fontFamily "var(--font-body)"
40
+ fontSize "0.82rem"
41
+ fontWeight "600"
42
+ textTransform uppercase
43
+ letterSpacing "0.18em"
44
+ textDecoration none
45
+ borderBottom "1.5px solid var(--color-primary)"
46
+ paddingBottom "0.35rem"
47
+ transition "opacity 0.15s"
48
+ :hover opacity="0.65"
49
+ }
50
+ }
51
+ }
52
+ }
@@ -0,0 +1,85 @@
1
+ /- kdl-version 2
2
+
3
+ bl-footer {
4
+ state {
5
+ brand "The Long Field"
6
+ tagline "Slow essays on design, technology, and the craft of making things well."
7
+ email hello@thelongfield.co
8
+ cadence "A new essay most Sundays."
9
+ }
10
+ style {
11
+ display block
12
+ backgroundColor "var(--color-paper)"
13
+ borderTop "1.5px solid var(--color-rule)"
14
+ padding "clamp(3rem, 6vw, 4.5rem) 1.5rem 2.5rem"
15
+ }
16
+ div {
17
+ style maxWidth="var(--max-width)" margin="0 auto" textAlign=center
18
+ div "${state.brand}" {
19
+ style {
20
+ fontFamily "var(--font-heading)"
21
+ fontWeight "900"
22
+ fontSize "clamp(2rem, 6vw, 3.25rem)"
23
+ letterSpacing "-0.03em"
24
+ lineHeight "1"
25
+ margin "0 0 1rem"
26
+ color "var(--color-text-primary)"
27
+ }
28
+ }
29
+ p "${state.tagline}" {
30
+ style {
31
+ fontFamily "var(--font-heading)"
32
+ fontStyle italic
33
+ fontSize "1.15rem"
34
+ color "var(--color-text-muted)"
35
+ margin "0 auto 1.75rem"
36
+ maxWidth "42ch"
37
+ }
38
+ }
39
+ nav {
40
+ style {
41
+ display flex
42
+ justifyContent center
43
+ flexWrap wrap
44
+ gap "1.75rem"
45
+ paddingTop "1.75rem"
46
+ borderTop "1px solid var(--color-border)"
47
+ fontFamily "var(--font-body)"
48
+ fontSize "0.74rem"
49
+ fontWeight "500"
50
+ textTransform uppercase
51
+ letterSpacing "0.16em"
52
+ }
53
+ a href="/#latest" Essays {
54
+ style color="var(--color-text-primary)" textDecoration=none {
55
+ :hover color="var(--color-primary)"
56
+ }
57
+ }
58
+ a href="/about/" About {
59
+ style color="var(--color-text-primary)" textDecoration=none {
60
+ :hover color="var(--color-primary)"
61
+ }
62
+ }
63
+ a href="/contact/" Contact {
64
+ style color="var(--color-text-primary)" textDecoration=none {
65
+ :hover color="var(--color-primary)"
66
+ }
67
+ }
68
+ a href="mailto:${state.email}" "${state.email}" {
69
+ style color="var(--color-text-primary)" textDecoration=none {
70
+ :hover color="var(--color-primary)"
71
+ }
72
+ }
73
+ }
74
+ p "© The Long Field · Set in Fraunces & Newsreader · Built with Jx" {
75
+ style {
76
+ margin "1.75rem 0 0"
77
+ fontFamily "var(--font-body)"
78
+ fontSize "0.72rem"
79
+ textTransform uppercase
80
+ letterSpacing "0.14em"
81
+ color "var(--color-text-muted)"
82
+ }
83
+ }
84
+ }
85
+ }
@@ -0,0 +1,111 @@
1
+ /- kdl-version 2
2
+
3
+ bl-masthead {
4
+ state {
5
+ edition "Field Notes · Vol. IV · Published most Sundays"
6
+ heading "The Long Field"
7
+ subheading "Slow essays on design, technology, and the craft of making things well — written by hand, one at a time."
8
+ colophon "Est. 2021 · Set in Fraunces & Newsreader · Marren Oda, editor"
9
+ cta "Read the latest"
10
+ ctaHref "#latest"
11
+ }
12
+ style {
13
+ display block
14
+ backgroundColor "var(--color-paper)"
15
+ padding "clamp(2rem, 5vw, 3.5rem) 1.5rem clamp(2.5rem, 6vw, 4rem)"
16
+ }
17
+ div {
18
+ style maxWidth="var(--max-width)" margin="0 auto"
19
+ div {
20
+ style {
21
+ display flex
22
+ alignItems center
23
+ gap "1.25rem"
24
+ marginBottom "clamp(1.25rem, 3vw, 2rem)"
25
+ }
26
+ span {
27
+ style flex="1" height="1px" backgroundColor="var(--color-rule)"
28
+ }
29
+ span "${state.edition}" {
30
+ style {
31
+ fontFamily "var(--font-body)"
32
+ fontSize "0.74rem"
33
+ fontWeight "500"
34
+ textTransform uppercase
35
+ letterSpacing "0.22em"
36
+ color "var(--color-text-muted)"
37
+ textAlign center
38
+ whiteSpace nowrap
39
+ @--sm whiteSpace=normal letterSpacing="0.14em"
40
+ }
41
+ }
42
+ span {
43
+ style flex="1" height="1px" backgroundColor="var(--color-rule)"
44
+ }
45
+ }
46
+ h1 "${state.heading}" {
47
+ style {
48
+ fontFamily "var(--font-heading)"
49
+ fontWeight "900"
50
+ fontSize "clamp(3.2rem, 15vw, 11rem)"
51
+ lineHeight "0.9"
52
+ letterSpacing "-0.035em"
53
+ textAlign center
54
+ margin "0"
55
+ color "var(--color-text-primary)"
56
+ }
57
+ }
58
+ div {
59
+ style {
60
+ marginTop "clamp(1.5rem, 3vw, 2.25rem)"
61
+ paddingTop "clamp(1.5rem, 3vw, 2.25rem)"
62
+ borderTop "3px double var(--color-rule)"
63
+ display flex
64
+ flexDirection column
65
+ alignItems center
66
+ gap "1.1rem"
67
+ }
68
+ p "${state.subheading}" {
69
+ style {
70
+ fontFamily "var(--font-heading)"
71
+ fontStyle italic
72
+ fontWeight "400"
73
+ fontSize "clamp(1.3rem, 3vw, 1.9rem)"
74
+ lineHeight "1.4"
75
+ textAlign center
76
+ maxWidth "30ch"
77
+ margin "0"
78
+ color "var(--color-text-primary)"
79
+ }
80
+ }
81
+ p "${state.colophon}" {
82
+ style {
83
+ fontFamily "var(--font-body)"
84
+ fontSize "0.76rem"
85
+ fontWeight "500"
86
+ textTransform uppercase
87
+ letterSpacing "0.16em"
88
+ color "var(--color-text-muted)"
89
+ textAlign center
90
+ margin "0"
91
+ }
92
+ }
93
+ a href="${state.ctaHref}" "${state.cta} ↓" {
94
+ style {
95
+ marginTop "0.5rem"
96
+ fontFamily "var(--font-body)"
97
+ fontSize "0.8rem"
98
+ fontWeight "600"
99
+ textTransform uppercase
100
+ letterSpacing "0.16em"
101
+ color "var(--color-primary)"
102
+ textDecoration none
103
+ borderBottom "1px solid var(--color-primary)"
104
+ paddingBottom "0.15rem"
105
+ transition "opacity 0.15s"
106
+ :hover opacity="0.6"
107
+ }
108
+ }
109
+ }
110
+ }
111
+ }
@@ -0,0 +1,62 @@
1
+ /- kdl-version 2
2
+
3
+ bl-nav {
4
+ style {
5
+ position sticky
6
+ top "0"
7
+ zIndex "50"
8
+ display block
9
+ backgroundColor "var(--color-paper)"
10
+ borderBottom "1.5px solid var(--color-rule)"
11
+ }
12
+ div {
13
+ style {
14
+ maxWidth "var(--max-width)"
15
+ margin "0 auto"
16
+ padding "0.55rem 1.5rem"
17
+ display flex
18
+ alignItems center
19
+ justifyContent space-between
20
+ gap "1rem"
21
+ }
22
+ a href="/" "The Long Field" {
23
+ style {
24
+ fontFamily "var(--font-heading)"
25
+ fontWeight "700"
26
+ fontSize "1.05rem"
27
+ letterSpacing "0.01em"
28
+ color "var(--color-text-primary)"
29
+ textDecoration none
30
+ whiteSpace nowrap
31
+ }
32
+ }
33
+ nav {
34
+ style {
35
+ display flex
36
+ alignItems center
37
+ gap "1.75rem"
38
+ fontFamily "var(--font-body)"
39
+ fontSize "0.72rem"
40
+ fontWeight "500"
41
+ textTransform uppercase
42
+ letterSpacing "0.16em"
43
+ @--sm gap="1.1rem"
44
+ }
45
+ a href="/#latest" Essays {
46
+ style color="var(--color-text-primary)" textDecoration=none transition="color 0.15s" {
47
+ :hover color="var(--color-primary)"
48
+ }
49
+ }
50
+ a href="/about/" About {
51
+ style color="var(--color-text-primary)" textDecoration=none transition="color 0.15s" {
52
+ :hover color="var(--color-primary)"
53
+ }
54
+ }
55
+ a href="/contact/" Subscribe {
56
+ style color="var(--color-primary)" textDecoration=none transition="opacity 0.15s" {
57
+ :hover opacity="0.65"
58
+ }
59
+ }
60
+ }
61
+ }
62
+ }
@@ -0,0 +1,104 @@
1
+ /- kdl-version 2
2
+
3
+ bl-newsletter-cta {
4
+ state {
5
+ eyebrow "The Sunday Dispatch"
6
+ heading "One essay, most Sundays."
7
+ text "Field notes on design, technology, and craft — sent when there's something worth saying. No noise, unsubscribe anytime."
8
+ placeholder you@example.com
9
+ cta Subscribe
10
+ note "Demo form — wire it to your email provider in components/bl-newsletter-cta.json."
11
+ }
12
+ style {
13
+ display block
14
+ backgroundColor "var(--color-ink)"
15
+ color "var(--color-text-white)"
16
+ padding "clamp(2.5rem, 6vw, 4rem) clamp(1.5rem, 5vw, 3.5rem)"
17
+ }
18
+ div {
19
+ style maxWidth="var(--max-width-narrow)" margin="0 auto" textAlign=center
20
+ p "${state.eyebrow}" {
21
+ style {
22
+ display "${state.eyebrow ? 'block' : 'none'}"
23
+ fontFamily "var(--font-body)"
24
+ fontSize "0.74rem"
25
+ fontWeight "500"
26
+ textTransform uppercase
27
+ letterSpacing "0.24em"
28
+ color "var(--color-text-white)"
29
+ opacity "0.6"
30
+ margin "0 0 1.25rem"
31
+ }
32
+ }
33
+ h2 "${state.heading}" {
34
+ style {
35
+ fontFamily "var(--font-heading)"
36
+ fontWeight "700"
37
+ fontSize "clamp(2rem, 5vw, 3.2rem)"
38
+ lineHeight "1.05"
39
+ letterSpacing "-0.02em"
40
+ margin "0 0 1rem"
41
+ }
42
+ }
43
+ p "${state.text}" {
44
+ style {
45
+ fontFamily "var(--font-heading)"
46
+ fontStyle italic
47
+ fontSize "1.2rem"
48
+ lineHeight "1.6"
49
+ opacity "0.8"
50
+ margin "0 auto 2rem"
51
+ maxWidth "48ch"
52
+ }
53
+ }
54
+ form action="#" method=post {
55
+ style {
56
+ display flex
57
+ gap "0"
58
+ maxWidth "440px"
59
+ margin "0 auto"
60
+ borderBottom "1.5px solid rgba(246, 241, 231, 0.5)"
61
+ @--sm flexDirection=column gap="1rem" borderBottom=none
62
+ }
63
+ input type=email name=email placeholder="${state.placeholder}" required="true" aria-label="Email address" {
64
+ style {
65
+ flex "1"
66
+ padding "0.75rem 0.25rem"
67
+ border none
68
+ borderBottom "1.5px solid transparent"
69
+ backgroundColor transparent
70
+ color "var(--color-text-white)"
71
+ fontSize "1.05rem"
72
+ fontFamily "var(--font-heading)"
73
+ outline none
74
+ @--sm borderBottom="1.5px solid rgba(246, 241, 231, 0.5)" textAlign=center
75
+ }
76
+ }
77
+ button type=submit "${state.cta} →" {
78
+ style {
79
+ backgroundColor transparent
80
+ color "var(--color-text-white)"
81
+ padding "0.75rem 0.5rem"
82
+ border none
83
+ fontFamily "var(--font-body)"
84
+ fontSize "0.8rem"
85
+ fontWeight "600"
86
+ textTransform uppercase
87
+ letterSpacing "0.16em"
88
+ cursor pointer
89
+ whiteSpace nowrap
90
+ transition "opacity 0.15s"
91
+ :hover opacity="0.6"
92
+ }
93
+ }
94
+ }
95
+ p "${state.note}" {
96
+ style {
97
+ display "${state.note ? 'block' : 'none'}"
98
+ fontSize "0.75rem"
99
+ opacity "0.5"
100
+ margin "1.5rem 0 0"
101
+ }
102
+ }
103
+ }
104
+ }