@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,917 @@
1
+ /- kdl-version 2
2
+
3
+ co-curriculum-accordion {
4
+ state {
5
+ open -1
6
+ toggle0 {
7
+ $expression {
8
+ operator "="
9
+ target (ref)"#/state/open"
10
+ value {
11
+ operator -
12
+ target 0
13
+ value {
14
+ operator *
15
+ target operator="===" target=(ref)"#/state/open" value=0
16
+ value 1
17
+ }
18
+ }
19
+ }
20
+ }
21
+ toggle1 {
22
+ $expression {
23
+ operator "="
24
+ target (ref)"#/state/open"
25
+ value {
26
+ operator -
27
+ target 1
28
+ value {
29
+ operator *
30
+ target operator="===" target=(ref)"#/state/open" value=1
31
+ value 2
32
+ }
33
+ }
34
+ }
35
+ }
36
+ toggle2 {
37
+ $expression {
38
+ operator "="
39
+ target (ref)"#/state/open"
40
+ value {
41
+ operator -
42
+ target 2
43
+ value {
44
+ operator *
45
+ target operator="===" target=(ref)"#/state/open" value=2
46
+ value 3
47
+ }
48
+ }
49
+ }
50
+ }
51
+ toggle3 {
52
+ $expression {
53
+ operator "="
54
+ target (ref)"#/state/open"
55
+ value {
56
+ operator -
57
+ target 3
58
+ value {
59
+ operator *
60
+ target operator="===" target=(ref)"#/state/open" value=3
61
+ value 4
62
+ }
63
+ }
64
+ }
65
+ }
66
+ toggle4 {
67
+ $expression {
68
+ operator "="
69
+ target (ref)"#/state/open"
70
+ value {
71
+ operator -
72
+ target 4
73
+ value {
74
+ operator *
75
+ target operator="===" target=(ref)"#/state/open" value=4
76
+ value 5
77
+ }
78
+ }
79
+ }
80
+ }
81
+ toggle5 {
82
+ $expression {
83
+ operator "="
84
+ target (ref)"#/state/open"
85
+ value {
86
+ operator -
87
+ target 5
88
+ value {
89
+ operator *
90
+ target operator="===" target=(ref)"#/state/open" value=5
91
+ value 6
92
+ }
93
+ }
94
+ }
95
+ }
96
+ }
97
+ style {
98
+ display block
99
+ maxWidth "var(--max-width-narrow)"
100
+ margin "0 auto"
101
+ backgroundColor "var(--color-bg-white)"
102
+ border "1px solid var(--color-border)"
103
+ borderRadius "var(--radius)"
104
+ overflow hidden
105
+ boxShadow "0 12px 40px rgba(15,23,42,0.06)"
106
+ }
107
+ div {
108
+ style borderBottom="1px solid var(--color-border)"
109
+ button type=button aria-label="Toggle Foundations of the Web" onclick=(ref)"#/state/toggle0" {
110
+ style {
111
+ width "100%"
112
+ display flex
113
+ alignItems center
114
+ gap "1rem"
115
+ padding "1.1rem 1.35rem"
116
+ border none
117
+ background "${state.open === 0 ? 'rgba(79,70,229,0.06)' : 'transparent'}"
118
+ cursor pointer
119
+ textAlign left
120
+ font inherit
121
+ transition "background 0.15s"
122
+ }
123
+ span "1" {
124
+ style {
125
+ flex none
126
+ display inline-flex
127
+ alignItems center
128
+ justifyContent center
129
+ width "2.25rem"
130
+ height "2.25rem"
131
+ borderRadius "0.5rem"
132
+ backgroundColor "${state.open === 0 ? 'var(--color-primary)' : 'rgba(79,70,229,0.1)'}"
133
+ color "${state.open === 0 ? 'var(--color-text-white)' : 'var(--color-primary)'}"
134
+ fontFamily "var(--font-heading)"
135
+ fontWeight "800"
136
+ fontSize "1rem"
137
+ transition "background-color 0.15s, color 0.15s"
138
+ }
139
+ }
140
+ span {
141
+ style flex="1"
142
+ span "Foundations of the Web" {
143
+ style {
144
+ display block
145
+ fontFamily "var(--font-heading)"
146
+ fontSize "1.15rem"
147
+ fontWeight "700"
148
+ color "var(--color-text-primary)"
149
+ }
150
+ }
151
+ span "1 week" {
152
+ style {
153
+ display block
154
+ fontSize "0.85rem"
155
+ color "var(--color-text-muted)"
156
+ marginTop "0.15rem"
157
+ }
158
+ }
159
+ }
160
+ span "${state.open === 0 ? '−' : '+'}" {
161
+ style {
162
+ flex none
163
+ width "1.75rem"
164
+ height "1.75rem"
165
+ display inline-flex
166
+ alignItems center
167
+ justifyContent center
168
+ fontSize "1.4rem"
169
+ fontWeight "400"
170
+ color "var(--color-primary)"
171
+ lineHeight "1"
172
+ }
173
+ }
174
+ }
175
+ div {
176
+ style display="${state.open === 0 ? 'block' : 'none'}" padding="0.25rem 1.35rem 1.5rem"
177
+ ul {
178
+ style listStyle=none margin="0" padding="0"
179
+ li {
180
+ style {
181
+ padding "0.5rem 0"
182
+ borderTop "1px solid var(--color-border)"
183
+ color "var(--color-text-muted)"
184
+ fontSize "0.98rem"
185
+ display flex
186
+ gap "0.6rem"
187
+ alignItems baseline
188
+ }
189
+ span → {
190
+ style color="var(--color-primary)" fontWeight="700"
191
+ }
192
+ span "How the web works: DNS, HTTP & the browser"
193
+ }
194
+ li {
195
+ style {
196
+ padding "0.5rem 0"
197
+ borderTop "1px solid var(--color-border)"
198
+ color "var(--color-text-muted)"
199
+ fontSize "0.98rem"
200
+ display flex
201
+ gap "0.6rem"
202
+ alignItems baseline
203
+ }
204
+ span → {
205
+ style color="var(--color-primary)" fontWeight="700"
206
+ }
207
+ span "The command line & your dev environment"
208
+ }
209
+ li {
210
+ style {
211
+ padding "0.5rem 0"
212
+ borderTop "1px solid var(--color-border)"
213
+ color "var(--color-text-muted)"
214
+ fontSize "0.98rem"
215
+ display flex
216
+ gap "0.6rem"
217
+ alignItems baseline
218
+ }
219
+ span → {
220
+ style color="var(--color-primary)" fontWeight="700"
221
+ }
222
+ span "Version control with Git & GitHub"
223
+ }
224
+ li {
225
+ style {
226
+ padding "0.5rem 0"
227
+ borderTop "1px solid var(--color-border)"
228
+ color "var(--color-text-muted)"
229
+ fontSize "0.98rem"
230
+ display flex
231
+ gap "0.6rem"
232
+ alignItems baseline
233
+ }
234
+ span → {
235
+ style color="var(--color-primary)" fontWeight="700"
236
+ }
237
+ span "Your first deploy to the internet"
238
+ }
239
+ }
240
+ }
241
+ }
242
+ div {
243
+ style borderBottom="1px solid var(--color-border)"
244
+ button type=button aria-label="Toggle HTML & CSS" onclick=(ref)"#/state/toggle1" {
245
+ style {
246
+ width "100%"
247
+ display flex
248
+ alignItems center
249
+ gap "1rem"
250
+ padding "1.1rem 1.35rem"
251
+ border none
252
+ background "${state.open === 1 ? 'rgba(79,70,229,0.06)' : 'transparent'}"
253
+ cursor pointer
254
+ textAlign left
255
+ font inherit
256
+ transition "background 0.15s"
257
+ }
258
+ span "2" {
259
+ style {
260
+ flex none
261
+ display inline-flex
262
+ alignItems center
263
+ justifyContent center
264
+ width "2.25rem"
265
+ height "2.25rem"
266
+ borderRadius "0.5rem"
267
+ backgroundColor "${state.open === 1 ? 'var(--color-primary)' : 'rgba(79,70,229,0.1)'}"
268
+ color "${state.open === 1 ? 'var(--color-text-white)' : 'var(--color-primary)'}"
269
+ fontFamily "var(--font-heading)"
270
+ fontWeight "800"
271
+ fontSize "1rem"
272
+ transition "background-color 0.15s, color 0.15s"
273
+ }
274
+ }
275
+ span {
276
+ style flex="1"
277
+ span "HTML & CSS" {
278
+ style {
279
+ display block
280
+ fontFamily "var(--font-heading)"
281
+ fontSize "1.15rem"
282
+ fontWeight "700"
283
+ color "var(--color-text-primary)"
284
+ }
285
+ }
286
+ span "2 weeks" {
287
+ style {
288
+ display block
289
+ fontSize "0.85rem"
290
+ color "var(--color-text-muted)"
291
+ marginTop "0.15rem"
292
+ }
293
+ }
294
+ }
295
+ span "${state.open === 1 ? '−' : '+'}" {
296
+ style {
297
+ flex none
298
+ width "1.75rem"
299
+ height "1.75rem"
300
+ display inline-flex
301
+ alignItems center
302
+ justifyContent center
303
+ fontSize "1.4rem"
304
+ fontWeight "400"
305
+ color "var(--color-primary)"
306
+ lineHeight "1"
307
+ }
308
+ }
309
+ }
310
+ div {
311
+ style display="${state.open === 1 ? 'block' : 'none'}" padding="0.25rem 1.35rem 1.5rem"
312
+ ul {
313
+ style listStyle=none margin="0" padding="0"
314
+ li {
315
+ style {
316
+ padding "0.5rem 0"
317
+ borderTop "1px solid var(--color-border)"
318
+ color "var(--color-text-muted)"
319
+ fontSize "0.98rem"
320
+ display flex
321
+ gap "0.6rem"
322
+ alignItems baseline
323
+ }
324
+ span → {
325
+ style color="var(--color-primary)" fontWeight="700"
326
+ }
327
+ span "Semantic HTML & document structure"
328
+ }
329
+ li {
330
+ style {
331
+ padding "0.5rem 0"
332
+ borderTop "1px solid var(--color-border)"
333
+ color "var(--color-text-muted)"
334
+ fontSize "0.98rem"
335
+ display flex
336
+ gap "0.6rem"
337
+ alignItems baseline
338
+ }
339
+ span → {
340
+ style color="var(--color-primary)" fontWeight="700"
341
+ }
342
+ span "The box model & modern CSS layout"
343
+ }
344
+ li {
345
+ style {
346
+ padding "0.5rem 0"
347
+ borderTop "1px solid var(--color-border)"
348
+ color "var(--color-text-muted)"
349
+ fontSize "0.98rem"
350
+ display flex
351
+ gap "0.6rem"
352
+ alignItems baseline
353
+ }
354
+ span → {
355
+ style color="var(--color-primary)" fontWeight="700"
356
+ }
357
+ span "Flexbox & CSS Grid in depth"
358
+ }
359
+ li {
360
+ style {
361
+ padding "0.5rem 0"
362
+ borderTop "1px solid var(--color-border)"
363
+ color "var(--color-text-muted)"
364
+ fontSize "0.98rem"
365
+ display flex
366
+ gap "0.6rem"
367
+ alignItems baseline
368
+ }
369
+ span → {
370
+ style color="var(--color-primary)" fontWeight="700"
371
+ }
372
+ span "Responsive, accessible interfaces"
373
+ }
374
+ }
375
+ }
376
+ }
377
+ div {
378
+ style borderBottom="1px solid var(--color-border)"
379
+ button type=button aria-label="Toggle JavaScript Programming" onclick=(ref)"#/state/toggle2" {
380
+ style {
381
+ width "100%"
382
+ display flex
383
+ alignItems center
384
+ gap "1rem"
385
+ padding "1.1rem 1.35rem"
386
+ border none
387
+ background "${state.open === 2 ? 'rgba(79,70,229,0.06)' : 'transparent'}"
388
+ cursor pointer
389
+ textAlign left
390
+ font inherit
391
+ transition "background 0.15s"
392
+ }
393
+ span "3" {
394
+ style {
395
+ flex none
396
+ display inline-flex
397
+ alignItems center
398
+ justifyContent center
399
+ width "2.25rem"
400
+ height "2.25rem"
401
+ borderRadius "0.5rem"
402
+ backgroundColor "${state.open === 2 ? 'var(--color-primary)' : 'rgba(79,70,229,0.1)'}"
403
+ color "${state.open === 2 ? 'var(--color-text-white)' : 'var(--color-primary)'}"
404
+ fontFamily "var(--font-heading)"
405
+ fontWeight "800"
406
+ fontSize "1rem"
407
+ transition "background-color 0.15s, color 0.15s"
408
+ }
409
+ }
410
+ span {
411
+ style flex="1"
412
+ span "JavaScript Programming" {
413
+ style {
414
+ display block
415
+ fontFamily "var(--font-heading)"
416
+ fontSize "1.15rem"
417
+ fontWeight "700"
418
+ color "var(--color-text-primary)"
419
+ }
420
+ }
421
+ span "3 weeks" {
422
+ style {
423
+ display block
424
+ fontSize "0.85rem"
425
+ color "var(--color-text-muted)"
426
+ marginTop "0.15rem"
427
+ }
428
+ }
429
+ }
430
+ span "${state.open === 2 ? '−' : '+'}" {
431
+ style {
432
+ flex none
433
+ width "1.75rem"
434
+ height "1.75rem"
435
+ display inline-flex
436
+ alignItems center
437
+ justifyContent center
438
+ fontSize "1.4rem"
439
+ fontWeight "400"
440
+ color "var(--color-primary)"
441
+ lineHeight "1"
442
+ }
443
+ }
444
+ }
445
+ div {
446
+ style display="${state.open === 2 ? 'block' : 'none'}" padding="0.25rem 1.35rem 1.5rem"
447
+ ul {
448
+ style listStyle=none margin="0" padding="0"
449
+ li {
450
+ style {
451
+ padding "0.5rem 0"
452
+ borderTop "1px solid var(--color-border)"
453
+ color "var(--color-text-muted)"
454
+ fontSize "0.98rem"
455
+ display flex
456
+ gap "0.6rem"
457
+ alignItems baseline
458
+ }
459
+ span → {
460
+ style color="var(--color-primary)" fontWeight="700"
461
+ }
462
+ span "Language fundamentals & data structures"
463
+ }
464
+ li {
465
+ style {
466
+ padding "0.5rem 0"
467
+ borderTop "1px solid var(--color-border)"
468
+ color "var(--color-text-muted)"
469
+ fontSize "0.98rem"
470
+ display flex
471
+ gap "0.6rem"
472
+ alignItems baseline
473
+ }
474
+ span → {
475
+ style color="var(--color-primary)" fontWeight="700"
476
+ }
477
+ span "Functions, scope & the DOM"
478
+ }
479
+ li {
480
+ style {
481
+ padding "0.5rem 0"
482
+ borderTop "1px solid var(--color-border)"
483
+ color "var(--color-text-muted)"
484
+ fontSize "0.98rem"
485
+ display flex
486
+ gap "0.6rem"
487
+ alignItems baseline
488
+ }
489
+ span → {
490
+ style color="var(--color-primary)" fontWeight="700"
491
+ }
492
+ span "Events & form handling"
493
+ }
494
+ li {
495
+ style {
496
+ padding "0.5rem 0"
497
+ borderTop "1px solid var(--color-border)"
498
+ color "var(--color-text-muted)"
499
+ fontSize "0.98rem"
500
+ display flex
501
+ gap "0.6rem"
502
+ alignItems baseline
503
+ }
504
+ span → {
505
+ style color="var(--color-primary)" fontWeight="700"
506
+ }
507
+ span "Async, fetch & working with APIs"
508
+ }
509
+ }
510
+ }
511
+ }
512
+ div {
513
+ style borderBottom="1px solid var(--color-border)"
514
+ button type=button aria-label="Toggle Frontend Frameworks" onclick=(ref)"#/state/toggle3" {
515
+ style {
516
+ width "100%"
517
+ display flex
518
+ alignItems center
519
+ gap "1rem"
520
+ padding "1.1rem 1.35rem"
521
+ border none
522
+ background "${state.open === 3 ? 'rgba(79,70,229,0.06)' : 'transparent'}"
523
+ cursor pointer
524
+ textAlign left
525
+ font inherit
526
+ transition "background 0.15s"
527
+ }
528
+ span "4" {
529
+ style {
530
+ flex none
531
+ display inline-flex
532
+ alignItems center
533
+ justifyContent center
534
+ width "2.25rem"
535
+ height "2.25rem"
536
+ borderRadius "0.5rem"
537
+ backgroundColor "${state.open === 3 ? 'var(--color-primary)' : 'rgba(79,70,229,0.1)'}"
538
+ color "${state.open === 3 ? 'var(--color-text-white)' : 'var(--color-primary)'}"
539
+ fontFamily "var(--font-heading)"
540
+ fontWeight "800"
541
+ fontSize "1rem"
542
+ transition "background-color 0.15s, color 0.15s"
543
+ }
544
+ }
545
+ span {
546
+ style flex="1"
547
+ span "Frontend Frameworks" {
548
+ style {
549
+ display block
550
+ fontFamily "var(--font-heading)"
551
+ fontSize "1.15rem"
552
+ fontWeight "700"
553
+ color "var(--color-text-primary)"
554
+ }
555
+ }
556
+ span "3 weeks" {
557
+ style {
558
+ display block
559
+ fontSize "0.85rem"
560
+ color "var(--color-text-muted)"
561
+ marginTop "0.15rem"
562
+ }
563
+ }
564
+ }
565
+ span "${state.open === 3 ? '−' : '+'}" {
566
+ style {
567
+ flex none
568
+ width "1.75rem"
569
+ height "1.75rem"
570
+ display inline-flex
571
+ alignItems center
572
+ justifyContent center
573
+ fontSize "1.4rem"
574
+ fontWeight "400"
575
+ color "var(--color-primary)"
576
+ lineHeight "1"
577
+ }
578
+ }
579
+ }
580
+ div {
581
+ style display="${state.open === 3 ? 'block' : 'none'}" padding="0.25rem 1.35rem 1.5rem"
582
+ ul {
583
+ style listStyle=none margin="0" padding="0"
584
+ li {
585
+ style {
586
+ padding "0.5rem 0"
587
+ borderTop "1px solid var(--color-border)"
588
+ color "var(--color-text-muted)"
589
+ fontSize "0.98rem"
590
+ display flex
591
+ gap "0.6rem"
592
+ alignItems baseline
593
+ }
594
+ span → {
595
+ style color="var(--color-primary)" fontWeight="700"
596
+ }
597
+ span "Components & reactive state"
598
+ }
599
+ li {
600
+ style {
601
+ padding "0.5rem 0"
602
+ borderTop "1px solid var(--color-border)"
603
+ color "var(--color-text-muted)"
604
+ fontSize "0.98rem"
605
+ display flex
606
+ gap "0.6rem"
607
+ alignItems baseline
608
+ }
609
+ span → {
610
+ style color="var(--color-primary)" fontWeight="700"
611
+ }
612
+ span "Props, events & composition"
613
+ }
614
+ li {
615
+ style {
616
+ padding "0.5rem 0"
617
+ borderTop "1px solid var(--color-border)"
618
+ color "var(--color-text-muted)"
619
+ fontSize "0.98rem"
620
+ display flex
621
+ gap "0.6rem"
622
+ alignItems baseline
623
+ }
624
+ span → {
625
+ style color="var(--color-primary)" fontWeight="700"
626
+ }
627
+ span "Client-side routing"
628
+ }
629
+ li {
630
+ style {
631
+ padding "0.5rem 0"
632
+ borderTop "1px solid var(--color-border)"
633
+ color "var(--color-text-muted)"
634
+ fontSize "0.98rem"
635
+ display flex
636
+ gap "0.6rem"
637
+ alignItems baseline
638
+ }
639
+ span → {
640
+ style color="var(--color-primary)" fontWeight="700"
641
+ }
642
+ span "Fetching & displaying live data"
643
+ }
644
+ }
645
+ }
646
+ }
647
+ div {
648
+ style borderBottom="1px solid var(--color-border)"
649
+ button type=button aria-label="Toggle Backend & Databases" onclick=(ref)"#/state/toggle4" {
650
+ style {
651
+ width "100%"
652
+ display flex
653
+ alignItems center
654
+ gap "1rem"
655
+ padding "1.1rem 1.35rem"
656
+ border none
657
+ background "${state.open === 4 ? 'rgba(79,70,229,0.06)' : 'transparent'}"
658
+ cursor pointer
659
+ textAlign left
660
+ font inherit
661
+ transition "background 0.15s"
662
+ }
663
+ span "5" {
664
+ style {
665
+ flex none
666
+ display inline-flex
667
+ alignItems center
668
+ justifyContent center
669
+ width "2.25rem"
670
+ height "2.25rem"
671
+ borderRadius "0.5rem"
672
+ backgroundColor "${state.open === 4 ? 'var(--color-primary)' : 'rgba(79,70,229,0.1)'}"
673
+ color "${state.open === 4 ? 'var(--color-text-white)' : 'var(--color-primary)'}"
674
+ fontFamily "var(--font-heading)"
675
+ fontWeight "800"
676
+ fontSize "1rem"
677
+ transition "background-color 0.15s, color 0.15s"
678
+ }
679
+ }
680
+ span {
681
+ style flex="1"
682
+ span "Backend & Databases" {
683
+ style {
684
+ display block
685
+ fontFamily "var(--font-heading)"
686
+ fontSize "1.15rem"
687
+ fontWeight "700"
688
+ color "var(--color-text-primary)"
689
+ }
690
+ }
691
+ span "2 weeks" {
692
+ style {
693
+ display block
694
+ fontSize "0.85rem"
695
+ color "var(--color-text-muted)"
696
+ marginTop "0.15rem"
697
+ }
698
+ }
699
+ }
700
+ span "${state.open === 4 ? '−' : '+'}" {
701
+ style {
702
+ flex none
703
+ width "1.75rem"
704
+ height "1.75rem"
705
+ display inline-flex
706
+ alignItems center
707
+ justifyContent center
708
+ fontSize "1.4rem"
709
+ fontWeight "400"
710
+ color "var(--color-primary)"
711
+ lineHeight "1"
712
+ }
713
+ }
714
+ }
715
+ div {
716
+ style display="${state.open === 4 ? 'block' : 'none'}" padding="0.25rem 1.35rem 1.5rem"
717
+ ul {
718
+ style listStyle=none margin="0" padding="0"
719
+ li {
720
+ style {
721
+ padding "0.5rem 0"
722
+ borderTop "1px solid var(--color-border)"
723
+ color "var(--color-text-muted)"
724
+ fontSize "0.98rem"
725
+ display flex
726
+ gap "0.6rem"
727
+ alignItems baseline
728
+ }
729
+ span → {
730
+ style color="var(--color-primary)" fontWeight="700"
731
+ }
732
+ span "HTTP servers & REST API design"
733
+ }
734
+ li {
735
+ style {
736
+ padding "0.5rem 0"
737
+ borderTop "1px solid var(--color-border)"
738
+ color "var(--color-text-muted)"
739
+ fontSize "0.98rem"
740
+ display flex
741
+ gap "0.6rem"
742
+ alignItems baseline
743
+ }
744
+ span → {
745
+ style color="var(--color-primary)" fontWeight="700"
746
+ }
747
+ span "Relational data & SQL"
748
+ }
749
+ li {
750
+ style {
751
+ padding "0.5rem 0"
752
+ borderTop "1px solid var(--color-border)"
753
+ color "var(--color-text-muted)"
754
+ fontSize "0.98rem"
755
+ display flex
756
+ gap "0.6rem"
757
+ alignItems baseline
758
+ }
759
+ span → {
760
+ style color="var(--color-primary)" fontWeight="700"
761
+ }
762
+ span "Authentication & sessions"
763
+ }
764
+ li {
765
+ style {
766
+ padding "0.5rem 0"
767
+ borderTop "1px solid var(--color-border)"
768
+ color "var(--color-text-muted)"
769
+ fontSize "0.98rem"
770
+ display flex
771
+ gap "0.6rem"
772
+ alignItems baseline
773
+ }
774
+ span → {
775
+ style color="var(--color-primary)" fontWeight="700"
776
+ }
777
+ span "Deploying your API to the cloud"
778
+ }
779
+ }
780
+ }
781
+ }
782
+ div {
783
+ style borderBottom="1px solid var(--color-border)"
784
+ button type=button aria-label="Toggle Capstone Project" onclick=(ref)"#/state/toggle5" {
785
+ style {
786
+ width "100%"
787
+ display flex
788
+ alignItems center
789
+ gap "1rem"
790
+ padding "1.1rem 1.35rem"
791
+ border none
792
+ background "${state.open === 5 ? 'rgba(79,70,229,0.06)' : 'transparent'}"
793
+ cursor pointer
794
+ textAlign left
795
+ font inherit
796
+ transition "background 0.15s"
797
+ }
798
+ span "6" {
799
+ style {
800
+ flex none
801
+ display inline-flex
802
+ alignItems center
803
+ justifyContent center
804
+ width "2.25rem"
805
+ height "2.25rem"
806
+ borderRadius "0.5rem"
807
+ backgroundColor "${state.open === 5 ? 'var(--color-primary)' : 'rgba(79,70,229,0.1)'}"
808
+ color "${state.open === 5 ? 'var(--color-text-white)' : 'var(--color-primary)'}"
809
+ fontFamily "var(--font-heading)"
810
+ fontWeight "800"
811
+ fontSize "1rem"
812
+ transition "background-color 0.15s, color 0.15s"
813
+ }
814
+ }
815
+ span {
816
+ style flex="1"
817
+ span "Capstone Project" {
818
+ style {
819
+ display block
820
+ fontFamily "var(--font-heading)"
821
+ fontSize "1.15rem"
822
+ fontWeight "700"
823
+ color "var(--color-text-primary)"
824
+ }
825
+ }
826
+ span "3 weeks" {
827
+ style {
828
+ display block
829
+ fontSize "0.85rem"
830
+ color "var(--color-text-muted)"
831
+ marginTop "0.15rem"
832
+ }
833
+ }
834
+ }
835
+ span "${state.open === 5 ? '−' : '+'}" {
836
+ style {
837
+ flex none
838
+ width "1.75rem"
839
+ height "1.75rem"
840
+ display inline-flex
841
+ alignItems center
842
+ justifyContent center
843
+ fontSize "1.4rem"
844
+ fontWeight "400"
845
+ color "var(--color-primary)"
846
+ lineHeight "1"
847
+ }
848
+ }
849
+ }
850
+ div {
851
+ style display="${state.open === 5 ? 'block' : 'none'}" padding="0.25rem 1.35rem 1.5rem"
852
+ ul {
853
+ style listStyle=none margin="0" padding="0"
854
+ li {
855
+ style {
856
+ padding "0.5rem 0"
857
+ borderTop "1px solid var(--color-border)"
858
+ color "var(--color-text-muted)"
859
+ fontSize "0.98rem"
860
+ display flex
861
+ gap "0.6rem"
862
+ alignItems baseline
863
+ }
864
+ span → {
865
+ style color="var(--color-primary)" fontWeight="700"
866
+ }
867
+ span "Scoping & planning your build"
868
+ }
869
+ li {
870
+ style {
871
+ padding "0.5rem 0"
872
+ borderTop "1px solid var(--color-border)"
873
+ color "var(--color-text-muted)"
874
+ fontSize "0.98rem"
875
+ display flex
876
+ gap "0.6rem"
877
+ alignItems baseline
878
+ }
879
+ span → {
880
+ style color="var(--color-primary)" fontWeight="700"
881
+ }
882
+ span "Building with live mentor code review"
883
+ }
884
+ li {
885
+ style {
886
+ padding "0.5rem 0"
887
+ borderTop "1px solid var(--color-border)"
888
+ color "var(--color-text-muted)"
889
+ fontSize "0.98rem"
890
+ display flex
891
+ gap "0.6rem"
892
+ alignItems baseline
893
+ }
894
+ span → {
895
+ style color="var(--color-primary)" fontWeight="700"
896
+ }
897
+ span "Testing, polish & performance"
898
+ }
899
+ li {
900
+ style {
901
+ padding "0.5rem 0"
902
+ borderTop "1px solid var(--color-border)"
903
+ color "var(--color-text-muted)"
904
+ fontSize "0.98rem"
905
+ display flex
906
+ gap "0.6rem"
907
+ alignItems baseline
908
+ }
909
+ span → {
910
+ style color="var(--color-primary)" fontWeight="700"
911
+ }
912
+ span "Demo-day presentation"
913
+ }
914
+ }
915
+ }
916
+ }
917
+ }