@tryvitris/website-harness 0.1.0-beta.6 → 0.1.0-beta.7

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 (458) hide show
  1. package/README.md +4 -4
  2. package/agent/graph.yaml +0 -2
  3. package/agent/refs/components.md +5 -41
  4. package/agent/refs/compose.md +1 -1
  5. package/agent/refs/implement.md +2 -2
  6. package/agent/refs/jev.md +1 -1
  7. package/agent/refs/layout.md +1 -1
  8. package/agent/refs/storyboard.md +1 -1
  9. package/agent/refs/template-adaptation.md +1 -1
  10. package/bin/api/agent/evaluate.js +10 -15
  11. package/bin/api/agent/grade.js +10 -15
  12. package/bin/api/cli/api.js +18 -23
  13. package/bin/api/cli.js +20 -25
  14. package/bin/api/engine.js +11 -16
  15. package/bin/api/hosting.js +12 -17
  16. package/bin/api/index.js +2 -3
  17. package/bin/api/references.js +1 -2
  18. package/bin/api/render.js +2 -4
  19. package/bin/chunks/{chunk-4GZCAWWK.js → chunk-4MFPATAB.js} +2 -4
  20. package/bin/chunks/{chunk-5OOPJNGN.js → chunk-5JTBC6UK.js} +1 -4
  21. package/bin/chunks/{chunk-Z2UNY47A.js → chunk-5YSPWKFF.js} +1 -1
  22. package/bin/chunks/{chunk-FYN4T4SV.js → chunk-7V3OKLKH.js} +15 -26
  23. package/bin/chunks/{chunk-3CTBXY5K.js → chunk-FRABKM65.js} +1936 -1899
  24. package/bin/chunks/{chunk-4DM5TTLG.js → chunk-H7Y72HXC.js} +5 -5
  25. package/bin/chunks/{chunk-R7YELY3C.js → chunk-HL6JVA4A.js} +100 -81
  26. package/bin/chunks/{chunk-54JC5L35.js → chunk-O55LAQ2C.js} +3 -5
  27. package/bin/chunks/{chunk-VH7PM7KJ.js → chunk-P56ZDMX7.js} +4 -6
  28. package/bin/chunks/{chunk-7VLBEAFW.js → chunk-PGFFKPK6.js} +2 -2
  29. package/bin/chunks/{chunk-YQYHROLZ.js → chunk-QRWGFLUU.js} +2 -2
  30. package/bin/chunks/{chunk-CBEJZO4L.js → chunk-TTAUU3AZ.js} +2 -2
  31. package/bin/chunks/{chunk-E5Y46VBX.js → chunk-VTI32UGJ.js} +200 -103
  32. package/bin/chunks/{chunk-DRJQ4OOU.js → chunk-WOORR67N.js} +0 -45
  33. package/bin/chunks/{chunk-B5I45LFD.js → chunk-YZWEXHT4.js} +11 -13
  34. package/bin/chunks/{chunk-YCVGD2CG.js → chunk-ZIROO2U4.js} +1204 -1176
  35. package/bin/chunks/{chunk-42IXFXUD.js → chunk-ZWFG4GPG.js} +11 -15
  36. package/bin/chunks/{design-context-store-IAT2P2OC.js → design-context-store-DCZOAK56.js} +10 -15
  37. package/bin/chunks/{packets-VBMY4SQJ.js → packets-QOLWPRNV.js} +10 -15
  38. package/bin/chunks/{policy-2I37JUU3.js → policy-MP2JZXI3.js} +1 -1
  39. package/bin/chunks/{preparation-S4MG3RPL.js → preparation-T2IOD5SJ.js} +10 -15
  40. package/bin/chunks/{questions-HKELBDFL.js → questions-XK545GCX.js} +1 -11
  41. package/bin/types/src/agent/composition-authoring.d.ts +2 -2
  42. package/bin/types/src/agent/jev/calibration.d.ts +2 -2
  43. package/bin/types/src/agent/jev/config.d.ts +1 -1
  44. package/bin/types/src/agent/jev/questions.d.ts +0 -10
  45. package/bin/types/src/agent/jev/types.d.ts +0 -2
  46. package/bin/types/src/agent/site-inputs.d.ts +9 -1
  47. package/bin/types/src/agent/template-catalog.d.ts +20 -0
  48. package/bin/types/src/agent/theme-selection.d.ts +4 -2
  49. package/bin/types/src/build/archives.d.ts +2 -0
  50. package/bin/vitris-art.js +10 -15
  51. package/bin/vitris-build.js +3 -5
  52. package/bin/vitris-create-site.js +12 -17
  53. package/bin/vitris-cursor-hook.js +10 -15
  54. package/bin/vitris-eval.js +12 -17
  55. package/bin/vitris-go.js +14 -19
  56. package/bin/vitris-harvest.js +11 -16
  57. package/bin/vitris-knowledge.js +11 -16
  58. package/bin/vitris-launch-preflight.js +11 -17
  59. package/bin/vitris-motion-view.js +13 -19
  60. package/bin/vitris-references.js +4 -7
  61. package/bin/vitris-refresh.js +11 -16
  62. package/bin/vitris-stock.js +1 -1
  63. package/bin/vitris-themes.js +10 -15
  64. package/bin/vitris-upgrade.js +11 -16
  65. package/bin/vitris-verify-browser.js +43 -8
  66. package/bin/vitris-verify-performance.js +3 -5
  67. package/bin/vitris.js +20 -25
  68. package/design-system/MASTER.md +2 -2
  69. package/docs/CLI.md +2 -1
  70. package/docs/DISTRIBUTION.md +1 -1
  71. package/package.json +2 -7
  72. package/templates/site/README.md +2 -0
  73. package/templates/site/gitignore +1 -0
  74. package/bin/chunks/chunk-6H3T46F5.js +0 -25
  75. package/bin/chunks/chunk-ANMJRJQ5.js +0 -31
  76. package/bin/chunks/chunk-FOXUQXTV.js +0 -278
  77. package/bin/chunks/chunk-HNORQ74T.js +0 -40
  78. package/bin/chunks/chunk-T7DGRVTP.js +0 -458
  79. package/bin/types/src/agent/jev/block-catalog.d.ts +0 -95
  80. package/bin/types/src/agent/jev/component-select.d.ts +0 -102
  81. package/bin/types/src/blocks/library-profile.d.ts +0 -9
  82. package/bin/types/src/blocks/metadata.d.ts +0 -65
  83. package/bin/vitris-blocks.js +0 -238
  84. package/blocks/CONVENTIONS.md +0 -121
  85. package/blocks/INDEX.md +0 -130
  86. package/blocks/about/about-awards/README.md +0 -36
  87. package/blocks/about/about-awards/styles.css +0 -13
  88. package/blocks/about/about-awards/template.html +0 -1
  89. package/blocks/about/about-credentials/README.md +0 -33
  90. package/blocks/about/about-credentials/block.meta.json +0 -85
  91. package/blocks/about/about-credentials/styles.css +0 -4
  92. package/blocks/about/about-credentials/template.html +0 -1
  93. package/blocks/about/about-founder/README.md +0 -35
  94. package/blocks/about/about-founder/styles.css +0 -9
  95. package/blocks/about/about-founder/template.html +0 -1
  96. package/blocks/about/about-mission/README.md +0 -31
  97. package/blocks/about/about-mission/styles.css +0 -5
  98. package/blocks/about/about-mission/template.html +0 -1
  99. package/blocks/about/about-statement/README.md +0 -28
  100. package/blocks/about/about-statement/styles.css +0 -7
  101. package/blocks/about/about-statement/template.html +0 -1
  102. package/blocks/about/about-story/README.md +0 -35
  103. package/blocks/about/about-story/styles.css +0 -5
  104. package/blocks/about/about-story/template.html +0 -1
  105. package/blocks/about/about-timeline/README.md +0 -33
  106. package/blocks/about/about-timeline/styles.css +0 -8
  107. package/blocks/about/about-timeline/template.html +0 -1
  108. package/blocks/about/about-values/README.md +0 -31
  109. package/blocks/about/about-values/styles.css +0 -3
  110. package/blocks/about/about-values/template.html +0 -1
  111. package/blocks/blog/blog-featured/README.md +0 -39
  112. package/blocks/blog/blog-featured/styles.css +0 -12
  113. package/blocks/blog/blog-featured/template.html +0 -1
  114. package/blocks/blog/blog-index/README.md +0 -34
  115. package/blocks/blog/blog-index/styles.css +0 -6
  116. package/blocks/blog/blog-index/template.html +0 -1
  117. package/blocks/blog/blog-post-header/README.md +0 -31
  118. package/blocks/blog/blog-post-header/styles.css +0 -8
  119. package/blocks/blog/blog-post-header/template.html +0 -1
  120. package/blocks/contact/contact-cards/README.md +0 -32
  121. package/blocks/contact/contact-cards/styles.css +0 -7
  122. package/blocks/contact/contact-cards/template.html +0 -1
  123. package/blocks/contact/contact-chips/README.md +0 -41
  124. package/blocks/contact/contact-chips/styles.css +0 -13
  125. package/blocks/contact/contact-chips/template.html +0 -1
  126. package/blocks/contact/contact-hours/README.md +0 -41
  127. package/blocks/contact/contact-hours/block.meta.json +0 -87
  128. package/blocks/contact/contact-hours/styles.css +0 -8
  129. package/blocks/contact/contact-hours/template.html +0 -1
  130. package/blocks/contact/contact-map/README.md +0 -39
  131. package/blocks/contact/contact-map/styles.css +0 -10
  132. package/blocks/contact/contact-map/template.html +0 -1
  133. package/blocks/contact/contact-offices/README.md +0 -32
  134. package/blocks/contact/contact-offices/styles.css +0 -8
  135. package/blocks/contact/contact-offices/template.html +0 -1
  136. package/blocks/contact/contact-phone-first/README.md +0 -33
  137. package/blocks/contact/contact-phone-first/block.meta.json +0 -86
  138. package/blocks/contact/contact-phone-first/styles.css +0 -11
  139. package/blocks/contact/contact-phone-first/template.html +0 -1
  140. package/blocks/contact/contact-split/README.md +0 -43
  141. package/blocks/contact/contact-split/styles.css +0 -12
  142. package/blocks/contact/contact-split/template.html +0 -1
  143. package/blocks/contact/contact-visit/README.md +0 -36
  144. package/blocks/contact/contact-visit/block.meta.json +0 -88
  145. package/blocks/contact/contact-visit/styles.css +0 -13
  146. package/blocks/contact/contact-visit/template.html +0 -1
  147. package/blocks/contact/service-areas/README.md +0 -32
  148. package/blocks/contact/service-areas/styles.css +0 -9
  149. package/blocks/contact/service-areas/template.html +0 -1
  150. package/blocks/content/glossary/README.md +0 -35
  151. package/blocks/content/glossary/styles.css +0 -6
  152. package/blocks/content/glossary/template.html +0 -1
  153. package/blocks/content/list-split/README.md +0 -33
  154. package/blocks/content/list-split/styles.css +0 -13
  155. package/blocks/content/list-split/template.html +0 -1
  156. package/blocks/content/prose-split/README.md +0 -32
  157. package/blocks/content/prose-split/styles.css +0 -12
  158. package/blocks/content/prose-split/template.html +0 -1
  159. package/blocks/content/specification-ledger/README.md +0 -32
  160. package/blocks/content/specification-ledger/block.meta.json +0 -85
  161. package/blocks/content/specification-ledger/styles.css +0 -10
  162. package/blocks/content/specification-ledger/template.html +0 -1
  163. package/blocks/cta/cta-band/README.md +0 -33
  164. package/blocks/cta/cta-band/styles.css +0 -11
  165. package/blocks/cta/cta-band/template.html +0 -1
  166. package/blocks/cta/cta-card/README.md +0 -35
  167. package/blocks/cta/cta-card/styles.css +0 -8
  168. package/blocks/cta/cta-card/template.html +0 -1
  169. package/blocks/cta/cta-floating-bar/README.md +0 -28
  170. package/blocks/cta/cta-floating-bar/styles.css +0 -8
  171. package/blocks/cta/cta-floating-bar/template.html +0 -1
  172. package/blocks/cta/cta-inline/README.md +0 -30
  173. package/blocks/cta/cta-inline/styles.css +0 -9
  174. package/blocks/cta/cta-inline/template.html +0 -1
  175. package/blocks/cta/cta-newsletter/README.md +0 -34
  176. package/blocks/cta/cta-newsletter/styles.css +0 -8
  177. package/blocks/cta/cta-newsletter/template.html +0 -1
  178. package/blocks/cta/cta-photo-fan/README.md +0 -36
  179. package/blocks/cta/cta-photo-fan/styles.css +0 -14
  180. package/blocks/cta/cta-photo-fan/template.html +0 -1
  181. package/blocks/cta/cta-split/README.md +0 -38
  182. package/blocks/cta/cta-split/styles.css +0 -10
  183. package/blocks/cta/cta-split/template.html +0 -1
  184. package/blocks/faq/faq-accordion/README.md +0 -36
  185. package/blocks/faq/faq-accordion/styles.css +0 -6
  186. package/blocks/faq/faq-accordion/template.html +0 -1
  187. package/blocks/faq/faq-grouped/README.md +0 -40
  188. package/blocks/faq/faq-grouped/styles.css +0 -20
  189. package/blocks/faq/faq-grouped/template.html +0 -1
  190. package/blocks/faq/faq-split/README.md +0 -37
  191. package/blocks/faq/faq-split/styles.css +0 -5
  192. package/blocks/faq/faq-split/template.html +0 -1
  193. package/blocks/faq/faq-tabs/README.md +0 -36
  194. package/blocks/faq/faq-tabs/styles.css +0 -3
  195. package/blocks/faq/faq-tabs/template.html +0 -1
  196. package/blocks/feature/feature-bento/README.md +0 -33
  197. package/blocks/feature/feature-bento/styles.css +0 -7
  198. package/blocks/feature/feature-bento/template.html +0 -1
  199. package/blocks/feature/feature-compare-table/README.md +0 -44
  200. package/blocks/feature/feature-compare-table/styles.css +0 -15
  201. package/blocks/feature/feature-compare-table/template.html +0 -1
  202. package/blocks/feature/feature-comparison/README.md +0 -34
  203. package/blocks/feature/feature-comparison/styles.css +0 -6
  204. package/blocks/feature/feature-comparison/template.html +0 -1
  205. package/blocks/feature/feature-grid-3/README.md +0 -34
  206. package/blocks/feature/feature-grid-3/styles.css +0 -8
  207. package/blocks/feature/feature-grid-3/template.html +0 -1
  208. package/blocks/feature/feature-icon-list/README.md +0 -39
  209. package/blocks/feature/feature-icon-list/styles.css +0 -9
  210. package/blocks/feature/feature-icon-list/template.html +0 -1
  211. package/blocks/feature/feature-spotlight/README.md +0 -39
  212. package/blocks/feature/feature-spotlight/styles.css +0 -5
  213. package/blocks/feature/feature-spotlight/template.html +0 -1
  214. package/blocks/feature/feature-stats-band/README.md +0 -33
  215. package/blocks/feature/feature-stats-band/styles.css +0 -8
  216. package/blocks/feature/feature-stats-band/template.html +0 -1
  217. package/blocks/feature/feature-tabs/README.md +0 -38
  218. package/blocks/feature/feature-tabs/styles.css +0 -7
  219. package/blocks/feature/feature-tabs/template.html +0 -1
  220. package/blocks/feature/feature-thumb-list/README.md +0 -38
  221. package/blocks/feature/feature-thumb-list/styles.css +0 -13
  222. package/blocks/feature/feature-thumb-list/template.html +0 -1
  223. package/blocks/feature/feature-zigzag/README.md +0 -31
  224. package/blocks/feature/feature-zigzag/styles.css +0 -6
  225. package/blocks/feature/feature-zigzag/template.html +0 -1
  226. package/blocks/footer/footer-columns/README.md +0 -39
  227. package/blocks/footer/footer-columns/styles.css +0 -16
  228. package/blocks/footer/footer-columns/template.html +0 -1
  229. package/blocks/footer/footer-compact/README.md +0 -33
  230. package/blocks/footer/footer-compact/styles.css +0 -12
  231. package/blocks/footer/footer-compact/template.html +0 -1
  232. package/blocks/footer/footer-cta/README.md +0 -37
  233. package/blocks/footer/footer-cta/styles.css +0 -18
  234. package/blocks/footer/footer-cta/template.html +0 -1
  235. package/blocks/footer/footer-social/README.md +0 -37
  236. package/blocks/footer/footer-social/styles.css +0 -17
  237. package/blocks/footer/footer-social/template.html +0 -1
  238. package/blocks/footer/footer-wordmark/README.md +0 -40
  239. package/blocks/footer/footer-wordmark/styles.css +0 -19
  240. package/blocks/footer/footer-wordmark/template.html +0 -1
  241. package/blocks/gallery/gallery-before-after/README.md +0 -31
  242. package/blocks/gallery/gallery-before-after/styles.css +0 -6
  243. package/blocks/gallery/gallery-before-after/template.html +0 -1
  244. package/blocks/gallery/gallery-carousel/README.md +0 -32
  245. package/blocks/gallery/gallery-carousel/styles.css +0 -7
  246. package/blocks/gallery/gallery-carousel/template.html +0 -1
  247. package/blocks/gallery/gallery-grid/README.md +0 -39
  248. package/blocks/gallery/gallery-grid/styles.css +0 -13
  249. package/blocks/gallery/gallery-grid/template.html +0 -1
  250. package/blocks/gallery/gallery-masonry/README.md +0 -33
  251. package/blocks/gallery/gallery-masonry/styles.css +0 -4
  252. package/blocks/gallery/gallery-masonry/template.html +0 -1
  253. package/blocks/gallery/gallery-mosaic-split/README.md +0 -40
  254. package/blocks/gallery/gallery-mosaic-split/styles.css +0 -15
  255. package/blocks/gallery/gallery-mosaic-split/template.html +0 -1
  256. package/blocks/hero/hero-asymmetric/README.md +0 -34
  257. package/blocks/hero/hero-asymmetric/styles.css +0 -13
  258. package/blocks/hero/hero-asymmetric/template.html +0 -10
  259. package/blocks/hero/hero-before-after/README.md +0 -38
  260. package/blocks/hero/hero-before-after/styles.css +0 -8
  261. package/blocks/hero/hero-before-after/template.html +0 -19
  262. package/blocks/hero/hero-editorial/README.md +0 -34
  263. package/blocks/hero/hero-editorial/block.meta.json +0 -85
  264. package/blocks/hero/hero-editorial/styles.css +0 -6
  265. package/blocks/hero/hero-editorial/template.html +0 -10
  266. package/blocks/hero/hero-evidence/README.md +0 -32
  267. package/blocks/hero/hero-evidence/block.meta.json +0 -85
  268. package/blocks/hero/hero-evidence/styles.css +0 -13
  269. package/blocks/hero/hero-evidence/template.html +0 -1
  270. package/blocks/hero/hero-form/README.md +0 -46
  271. package/blocks/hero/hero-form/styles.css +0 -11
  272. package/blocks/hero/hero-form/template.html +0 -15
  273. package/blocks/hero/hero-menu/README.md +0 -36
  274. package/blocks/hero/hero-menu/styles.css +0 -7
  275. package/blocks/hero/hero-menu/template.html +0 -10
  276. package/blocks/hero/hero-overlay/README.md +0 -35
  277. package/blocks/hero/hero-overlay/styles.css +0 -14
  278. package/blocks/hero/hero-overlay/template.html +0 -10
  279. package/blocks/hero/hero-page/README.md +0 -35
  280. package/blocks/hero/hero-page/styles.css +0 -19
  281. package/blocks/hero/hero-page/template.html +0 -1
  282. package/blocks/hero/hero-product/README.md +0 -41
  283. package/blocks/hero/hero-product/styles.css +0 -11
  284. package/blocks/hero/hero-product/template.html +0 -14
  285. package/blocks/hero/hero-service/README.md +0 -37
  286. package/blocks/hero/hero-service/block.meta.json +0 -85
  287. package/blocks/hero/hero-service/styles.css +0 -17
  288. package/blocks/hero/hero-service/template.html +0 -1
  289. package/blocks/hero/hero-split/README.md +0 -36
  290. package/blocks/hero/hero-split/styles.css +0 -7
  291. package/blocks/hero/hero-split/template.html +0 -11
  292. package/blocks/hero/hero-statement/README.md +0 -33
  293. package/blocks/hero/hero-statement/styles.css +0 -8
  294. package/blocks/hero/hero-statement/template.html +0 -1
  295. package/blocks/hero/hero-stats/README.md +0 -37
  296. package/blocks/hero/hero-stats/styles.css +0 -10
  297. package/blocks/hero/hero-stats/template.html +0 -10
  298. package/blocks/hero/hero-video-still/README.md +0 -36
  299. package/blocks/hero/hero-video-still/styles.css +0 -9
  300. package/blocks/hero/hero-video-still/template.html +0 -13
  301. package/blocks/icons.md +0 -44
  302. package/blocks/incentives/incentive-banner/README.md +0 -28
  303. package/blocks/incentives/incentive-banner/styles.css +0 -7
  304. package/blocks/incentives/incentive-banner/template.html +0 -1
  305. package/blocks/incentives/incentive-cards/README.md +0 -31
  306. package/blocks/incentives/incentive-cards/styles.css +0 -4
  307. package/blocks/incentives/incentive-cards/template.html +0 -1
  308. package/blocks/navbar/nav-announcement/README.md +0 -35
  309. package/blocks/navbar/nav-announcement/styles.css +0 -10
  310. package/blocks/navbar/nav-announcement/template.html +0 -14
  311. package/blocks/navbar/nav-centered/README.md +0 -35
  312. package/blocks/navbar/nav-centered/styles.css +0 -11
  313. package/blocks/navbar/nav-centered/template.html +0 -12
  314. package/blocks/navbar/nav-minimal/README.md +0 -29
  315. package/blocks/navbar/nav-minimal/styles.css +0 -5
  316. package/blocks/navbar/nav-minimal/template.html +0 -6
  317. package/blocks/navbar/nav-split/README.md +0 -34
  318. package/blocks/navbar/nav-split/styles.css +0 -11
  319. package/blocks/navbar/nav-split/template.html +0 -11
  320. package/blocks/navbar/nav-utility/README.md +0 -37
  321. package/blocks/navbar/nav-utility/styles.css +0 -17
  322. package/blocks/navbar/nav-utility/template.html +0 -12
  323. package/blocks/pricing/menu-featured/README.md +0 -34
  324. package/blocks/pricing/menu-featured/styles.css +0 -4
  325. package/blocks/pricing/menu-featured/template.html +0 -1
  326. package/blocks/pricing/menu-sections/README.md +0 -33
  327. package/blocks/pricing/menu-sections/styles.css +0 -9
  328. package/blocks/pricing/menu-sections/template.html +0 -1
  329. package/blocks/pricing/pricing-table/README.md +0 -40
  330. package/blocks/pricing/pricing-table/styles.css +0 -9
  331. package/blocks/pricing/pricing-table/template.html +0 -1
  332. package/blocks/pricing/pricing-tiers/README.md +0 -34
  333. package/blocks/pricing/pricing-tiers/styles.css +0 -7
  334. package/blocks/pricing/pricing-tiers/template.html +0 -1
  335. package/blocks/pricing/pricing-toggle/README.md +0 -34
  336. package/blocks/pricing/pricing-toggle/styles.css +0 -10
  337. package/blocks/pricing/pricing-toggle/template.html +0 -1
  338. package/blocks/process/process-carousel/README.md +0 -33
  339. package/blocks/process/process-carousel/styles.css +0 -5
  340. package/blocks/process/process-carousel/template.html +0 -1
  341. package/blocks/process/process-split/README.md +0 -35
  342. package/blocks/process/process-split/styles.css +0 -6
  343. package/blocks/process/process-split/template.html +0 -1
  344. package/blocks/process/process-stepper/README.md +0 -40
  345. package/blocks/process/process-stepper/styles.css +0 -11
  346. package/blocks/process/process-stepper/template.html +0 -1
  347. package/blocks/process/process-steps/README.md +0 -35
  348. package/blocks/process/process-steps/styles.css +0 -6
  349. package/blocks/process/process-steps/template.html +0 -1
  350. package/blocks/process/process-sticky/README.md +0 -38
  351. package/blocks/process/process-sticky/styles.css +0 -12
  352. package/blocks/process/process-sticky/template.html +0 -1
  353. package/blocks/process/process-timeline/README.md +0 -35
  354. package/blocks/process/process-timeline/styles.css +0 -10
  355. package/blocks/process/process-timeline/template.html +0 -1
  356. package/blocks/services/services-cards/README.md +0 -34
  357. package/blocks/services/services-cards/styles.css +0 -3
  358. package/blocks/services/services-cards/template.html +0 -1
  359. package/blocks/services/services-carousel/README.md +0 -34
  360. package/blocks/services/services-carousel/styles.css +0 -6
  361. package/blocks/services/services-carousel/template.html +0 -1
  362. package/blocks/services/services-list/README.md +0 -32
  363. package/blocks/services/services-list/block.meta.json +0 -85
  364. package/blocks/services/services-list/styles.css +0 -10
  365. package/blocks/services/services-list/template.html +0 -1
  366. package/blocks/services/services-menu/README.md +0 -39
  367. package/blocks/services/services-menu/styles.css +0 -6
  368. package/blocks/services/services-menu/template.html +0 -1
  369. package/blocks/services/services-packages/README.md +0 -34
  370. package/blocks/services/services-packages/styles.css +0 -6
  371. package/blocks/services/services-packages/template.html +0 -1
  372. package/blocks/services/services-panels/README.md +0 -36
  373. package/blocks/services/services-panels/styles.css +0 -15
  374. package/blocks/services/services-panels/template.html +0 -1
  375. package/blocks/services/services-photo-grid/README.md +0 -39
  376. package/blocks/services/services-photo-grid/styles.css +0 -10
  377. package/blocks/services/services-photo-grid/template.html +0 -1
  378. package/blocks/services/services-priority/README.md +0 -33
  379. package/blocks/services/services-priority/block.meta.json +0 -86
  380. package/blocks/services/services-priority/styles.css +0 -16
  381. package/blocks/services/services-priority/template.html +0 -1
  382. package/blocks/stats/stats-cards/README.md +0 -31
  383. package/blocks/stats/stats-cards/styles.css +0 -4
  384. package/blocks/stats/stats-cards/template.html +0 -1
  385. package/blocks/stats/stats-mosaic/README.md +0 -27
  386. package/blocks/stats/stats-mosaic/styles.css +0 -9
  387. package/blocks/stats/stats-mosaic/template.html +0 -1
  388. package/blocks/stats/stats-row/README.md +0 -29
  389. package/blocks/stats/stats-row/styles.css +0 -8
  390. package/blocks/stats/stats-row/template.html +0 -1
  391. package/blocks/stats/stats-split/README.md +0 -35
  392. package/blocks/stats/stats-split/styles.css +0 -3
  393. package/blocks/stats/stats-split/template.html +0 -1
  394. package/blocks/team/team-featured/README.md +0 -42
  395. package/blocks/team/team-featured/styles.css +0 -9
  396. package/blocks/team/team-featured/template.html +0 -1
  397. package/blocks/team/team-grid/README.md +0 -35
  398. package/blocks/team/team-grid/styles.css +0 -8
  399. package/blocks/team/team-grid/template.html +0 -1
  400. package/blocks/team/team-list/README.md +0 -32
  401. package/blocks/team/team-list/styles.css +0 -7
  402. package/blocks/team/team-list/template.html +0 -1
  403. package/blocks/testimonial/testimonial-carousel/README.md +0 -32
  404. package/blocks/testimonial/testimonial-carousel/styles.css +0 -7
  405. package/blocks/testimonial/testimonial-carousel/template.html +0 -1
  406. package/blocks/testimonial/testimonial-grid/README.md +0 -32
  407. package/blocks/testimonial/testimonial-grid/styles.css +0 -5
  408. package/blocks/testimonial/testimonial-grid/template.html +0 -1
  409. package/blocks/testimonial/testimonial-mosaic/README.md +0 -38
  410. package/blocks/testimonial/testimonial-mosaic/styles.css +0 -14
  411. package/blocks/testimonial/testimonial-mosaic/template.html +0 -1
  412. package/blocks/testimonial/testimonial-platform/README.md +0 -34
  413. package/blocks/testimonial/testimonial-platform/styles.css +0 -17
  414. package/blocks/testimonial/testimonial-platform/template.html +0 -1
  415. package/blocks/testimonial/testimonial-rating/README.md +0 -28
  416. package/blocks/testimonial/testimonial-rating/styles.css +0 -6
  417. package/blocks/testimonial/testimonial-rating/template.html +0 -1
  418. package/blocks/testimonial/testimonial-spotlight/README.md +0 -31
  419. package/blocks/testimonial/testimonial-spotlight/styles.css +0 -9
  420. package/blocks/testimonial/testimonial-spotlight/template.html +0 -1
  421. package/blocks/testimonial/testimonial-switcher/README.md +0 -39
  422. package/blocks/testimonial/testimonial-switcher/styles.css +0 -23
  423. package/blocks/testimonial/testimonial-switcher/template.html +0 -1
  424. package/blocks/testimonial/testimonial-wall/README.md +0 -34
  425. package/blocks/testimonial/testimonial-wall/styles.css +0 -7
  426. package/blocks/testimonial/testimonial-wall/template.html +0 -1
  427. package/blocks/trust-strip/trust-badges/README.md +0 -30
  428. package/blocks/trust-strip/trust-badges/styles.css +0 -5
  429. package/blocks/trust-strip/trust-badges/template.html +0 -1
  430. package/blocks/trust-strip/trust-certs/README.md +0 -31
  431. package/blocks/trust-strip/trust-certs/styles.css +0 -12
  432. package/blocks/trust-strip/trust-certs/template.html +0 -1
  433. package/blocks/trust-strip/trust-logos/README.md +0 -32
  434. package/blocks/trust-strip/trust-logos/styles.css +0 -5
  435. package/blocks/trust-strip/trust-logos/template.html +0 -1
  436. package/blocks/trust-strip/trust-quote/README.md +0 -29
  437. package/blocks/trust-strip/trust-quote/styles.css +0 -5
  438. package/blocks/trust-strip/trust-quote/template.html +0 -1
  439. package/blocks/trust-strip/trust-reviews/README.md +0 -35
  440. package/blocks/trust-strip/trust-reviews/styles.css +0 -9
  441. package/blocks/trust-strip/trust-reviews/template.html +0 -1
  442. package/blocks/work/case-alternating/README.md +0 -34
  443. package/blocks/work/case-alternating/block.meta.json +0 -86
  444. package/blocks/work/case-alternating/styles.css +0 -7
  445. package/blocks/work/case-alternating/template.html +0 -1
  446. package/blocks/work/case-carousel/README.md +0 -26
  447. package/blocks/work/case-carousel/styles.css +0 -7
  448. package/blocks/work/case-carousel/template.html +0 -1
  449. package/blocks/work/case-header/README.md +0 -38
  450. package/blocks/work/case-header/styles.css +0 -18
  451. package/blocks/work/case-header/template.html +0 -1
  452. package/blocks/work/project-evidence/README.md +0 -35
  453. package/blocks/work/project-evidence/block.meta.json +0 -87
  454. package/blocks/work/project-evidence/styles.css +0 -12
  455. package/blocks/work/project-evidence/template.html +0 -1
  456. package/blocks/work/project-grid/README.md +0 -38
  457. package/blocks/work/project-grid/styles.css +0 -9
  458. package/blocks/work/project-grid/template.html +0 -1
@@ -1,40 +0,0 @@
1
- # process-stepper
2
-
3
- One large photo panel per step with a step strip below (tabs island).
4
-
5
- - **Category:** process
6
- - **Media:** one photo per step
7
- - **Registers:** professional, trade, beauty
8
- - **Variants:** (none)
9
-
10
- ## Slots
11
-
12
- | Slot | Content |
13
- |------|---------|
14
- | `eyebrow` | Optional `<p class="eyebrow">` |
15
- | `heading` | `<h2>` |
16
- | `lede` | Optional `<p class="lede">` (one sentence) |
17
- | `panels` | 3–6 `<div role="tabpanel" id="…" class="photo-card"><img><div class="photo-card__body"><p class="eyebrow">Step n of N</p><h3>…</h3><p>…</p></div></div>` |
18
- | `tabs` | Matching `<button role="tab" type="button" class="tabs__tab" aria-controls="…"><span>Step n</span><strong>Title</strong></button>` (first has `aria-selected="true"`) |
19
-
20
- ## Example
21
-
22
- ```html
23
- <process-stepper>
24
- <p slot="eyebrow" class="eyebrow eyebrow--accent">Our process</p>
25
- <h2 slot="heading">Five clear steps from first call to final result.</h2>
26
- <p slot="lede" class="lede">Same steps, same care, every case. The same senior team is with you from the first call to the end.</p>
27
- <div slot="panels" role="tabpanel" id="step-call" class="photo-card"><img src="/media/harvest/step-1.jpg" alt="" width="1600" height="900" loading="lazy"><div class="photo-card__body"><p class="eyebrow">Step 1 of 5</p><h3>First call</h3><p>A senior lawyer takes your call — never an assistant. We check for conflicts and decide together if we're the right fit.</p></div></div>
28
- <div slot="panels" role="tabpanel" id="step-strategy" class="photo-card"><img src="/media/harvest/step-2.jpg" alt="" width="1600" height="900" loading="lazy"><div class="photo-card__body"><p class="eyebrow">Step 2 of 5</p><h3>Strategy</h3><p>A written plan with the likely paths, costs, and timelines — before you commit to anything.</p></div></div>
29
- <div slot="panels" role="tabpanel" id="step-prep" class="photo-card"><img src="/media/harvest/step-3.jpg" alt="" width="1600" height="900" loading="lazy"><div class="photo-card__body"><p class="eyebrow">Step 3 of 5</p><h3>Preparation</h3><p>Evidence, witnesses, and filings assembled by the team that will actually argue the case.</p></div></div>
30
- <div slot="panels" role="tabpanel" id="step-pretrial" class="photo-card"><img src="/media/harvest/step-4.jpg" alt="" width="1600" height="900" loading="lazy"><div class="photo-card__body"><p class="eyebrow">Step 4 of 5</p><h3>Pre-trial</h3><p>Motions and negotiations that often end the matter before a courtroom is needed.</p></div></div>
31
- <div slot="panels" role="tabpanel" id="step-result" class="photo-card"><img src="/media/harvest/step-5.jpg" alt="" width="1600" height="900" loading="lazy"><div class="photo-card__body"><p class="eyebrow">Step 5 of 5</p><h3>Final result</h3><p>Trial, settlement, or dismissal — and a plain-language debrief on what it means for you.</p></div></div>
32
- <button slot="tabs" role="tab" type="button" class="tabs__tab" aria-controls="step-call" aria-selected="true"><span>Step 1</span><strong>First call</strong></button>
33
- <button slot="tabs" role="tab" type="button" class="tabs__tab" aria-controls="step-strategy"><span>Step 2</span><strong>Strategy</strong></button>
34
- <button slot="tabs" role="tab" type="button" class="tabs__tab" aria-controls="step-prep"><span>Step 3</span><strong>Preparation</strong></button>
35
- <button slot="tabs" role="tab" type="button" class="tabs__tab" aria-controls="step-pretrial"><span>Step 4</span><strong>Pre-trial</strong></button>
36
- <button slot="tabs" role="tab" type="button" class="tabs__tab" aria-controls="step-result"><span>Step 5</span><strong>Final result</strong></button>
37
- </process-stepper>
38
- ```
39
-
40
- Copy this folder into the site repo as `components/<your-name>/`, rename the root class to `c-<your-name>`, and adapt slots, copy, and media.
@@ -1,11 +0,0 @@
1
- .c-process-stepper__panels > [hidden]{display:none}
2
- .c-process-stepper__panels .photo-card{min-height:clamp(18rem,44vw,30rem)}
3
- .c-process-stepper__panels .photo-card__body{padding:var(--space-6);max-width:36rem}
4
- .c-process-stepper__panels .photo-card__body h3{font-size:var(--step-4)}
5
- .c-process-stepper__list{display:grid;grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));gap:0;margin-top:var(--space-4);border-bottom:0;border-top:1px solid var(--color-border)}
6
- .c-process-stepper__list .tabs__tab{display:grid;gap:.1rem;justify-items:start;margin:-1px 0 0;padding:var(--space-4) var(--space-3);border:0;border-top:2px solid transparent;text-align:left;min-height:0}
7
- .c-process-stepper__list .tabs__tab span{font-size:var(--step-0);letter-spacing:.06em;text-transform:uppercase;color:var(--color-muted)}
8
- .c-process-stepper__list .tabs__tab strong{font-weight:600;color:var(--color-text)}
9
- .c-process-stepper__list .tabs__tab[aria-selected="true"]{border-top-color:var(--color-accent);background:transparent}
10
- .c-process-stepper__list .tabs__tab[aria-selected="true"] span{color:var(--color-accent)}
11
- @media(max-width:719px){.c-process-stepper__list{grid-template-columns:repeat(2,minmax(0,1fr))}}
@@ -1 +0,0 @@
1
- <section class="c-process-stepper section"><div class="wrap"><div class="section__head"><slot name="eyebrow"></slot><slot name="heading"></slot><slot name="lede"></slot></div><div class="c-process-stepper__tabs" data-island="tabs"><div class="c-process-stepper__panels"><slot name="panels"></slot></div><div class="tabs__list c-process-stepper__list" role="tablist" aria-label="Steps"><slot name="tabs"></slot></div></div></div></section>
@@ -1,35 +0,0 @@
1
- # process-steps
2
-
3
- Numbered horizontal/stacked steps.
4
-
5
- - **Category:** process
6
- - **Media:** optional icons
7
- - **Registers:** trade, b2b, professional
8
- - **Variants:** three
9
-
10
- ## Slots
11
-
12
- | Slot | Content |
13
- |------|---------|
14
- | `eyebrow` | Optional `<p class="eyebrow">` |
15
- | `heading` | `<h2>` |
16
- | `lede` | Optional `<p class="lede">` (one sentence) |
17
- | `steps` | 3–4 `<li>` with `<h3>` + `<p>`; numbers render automatically |
18
-
19
- ## Example
20
-
21
- ```html
22
- <process-steps>
23
- <p slot="eyebrow" class="eyebrow eyebrow--accent">How it works</p>
24
- <h2 slot="heading">From first call to final walkthrough</h2>
25
- <p slot="lede" class="lede">Most projects take two weeks from estimate to finished roof.</p>
26
- <li slot="steps"><h3>Call or book online</h3><p>Tell us what you're seeing. We'll schedule an inspection within three business days.</p></li>
27
- <li slot="steps"><h3>Inspection &amp; estimate</h3><p>Drone photos, an attic check, and a written line-item estimate inside 48 hours.</p></li>
28
- <li slot="steps"><h3>Install</h3><p>One crew, one to three days, tarps on the beds and a magnet sweep every evening.</p></li>
29
- <li slot="steps"><h3>Walkthrough &amp; warranty</h3><p>We walk the roof with you, hand over photos, and register your warranty.</p></li>
30
- </process-steps>
31
- ```
32
-
33
- Variants: `<process-steps variant="three">`.
34
-
35
- Copy this folder into the site repo as `components/<your-name>/`, rename the root class to `c-<your-name>`, and adapt slots, copy, and media.
@@ -1,6 +0,0 @@
1
- .c-process-steps__grid{list-style:none;margin:0;padding:0;counter-reset:step;--gap:var(--space-6)}
2
- .c-process-steps__grid > *{counter-increment:step;display:grid;gap:var(--space-3);align-content:start;position:relative;padding-top:var(--space-5);border-top:1px solid var(--color-border)}
3
- .c-process-steps__grid > *::before{content:counter(step,decimal-leading-zero);display:inline-grid;place-items:center;width:2.5rem;height:2.5rem;border-radius:var(--radius-pill);background:color-mix(in srgb,var(--color-accent) 12%,transparent);color:var(--color-accent);font-family:var(--font-display);font-weight:600;font-size:var(--step-1);margin-bottom:var(--space-2)}
4
- .c-process-steps__grid h3{font-size:var(--step-2)}
5
- .c-process-steps__grid p{margin:0;color:var(--color-muted)}
6
- @media(min-width:1080px){.c-process-steps--three .c-process-steps__grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@@ -1 +0,0 @@
1
- <section class="c-process-steps section"><div class="wrap"><div class="section__head"><slot name="eyebrow"></slot><slot name="heading"></slot><slot name="lede"></slot></div><ol class="grid grid--4 c-process-steps__grid"><slot name="steps"></slot></ol></div></section>
@@ -1,38 +0,0 @@
1
- # process-sticky
2
-
3
- Sticky intro column beside numbered steps with thumbnails.
4
-
5
- - **Category:** process
6
- - **Media:** one thumbnail per step
7
- - **Registers:** trade, beauty, b2b
8
- - **Variants:** dark
9
-
10
- ## Slots
11
-
12
- | Slot | Content |
13
- |------|---------|
14
- | `eyebrow` | Optional `<p class="eyebrow">` |
15
- | `heading` | `<h2>` |
16
- | `lede` | Optional `<p class="lede">` (one sentence) |
17
- | `actions` | Optional 1–2 buttons / `.btn-arrow` links |
18
- | `steps` | 4–6 `<li><img><div><h3>Title</h3><p>…</p></div></li>` (numbers are added automatically) |
19
-
20
- ## Example
21
-
22
- ```html
23
- <process-sticky>
24
- <p slot="eyebrow" class="eyebrow eyebrow--accent">Our process</p>
25
- <h2 slot="heading">Five steps. Start to finish.</h2>
26
- <p slot="lede" class="lede">We handle everything from the first visit to the final cleanup. You always know what happens next and what it costs.</p>
27
- <a slot="actions" class="btn" href="/contact">Get a free estimate</a>
28
- <li slot="steps"><img src="/media/harvest/step-a.jpg" alt="" width="240" height="240" loading="lazy"><div><h3>Free inspection</h3><p>We get on your roof, take photos, and tell you what shape it's in — then leave the decision to you.</p></div></li>
29
- <li slot="steps"><img src="/media/harvest/step-b.jpg" alt="" width="240" height="240" loading="lazy"><div><h3>Clear written estimate</h3><p>Every cost and material choice on one page. The price we quote is the price you pay.</p></div></li>
30
- <li slot="steps"><img src="/media/harvest/step-c.jpg" alt="" width="240" height="240" loading="lazy"><div><h3>Pick your date</h3><p>We set a date that works for you and drop off materials the day before, so the crew starts on time.</p></div></li>
31
- <li slot="steps"><img src="/media/harvest/step-d.jpg" alt="" width="240" height="240" loading="lazy"><div><h3>Installation</h3><p>Our licensed crew tears off the old roof and installs the new one. Most homes are done in one or two days.</p></div></li>
32
- <li slot="steps"><img src="/media/harvest/step-e.jpg" alt="" width="240" height="240" loading="lazy"><div><h3>Final walkthrough</h3><p>We sweep your yard for nails with magnets and walk the finished roof with you before we call it done.</p></div></li>
33
- </process-sticky>
34
- ```
35
-
36
- Variants: `<process-sticky variant="dark">`.
37
-
38
- Copy this folder into the site repo as `components/<your-name>/`, rename the root class to `c-<your-name>`, and adapt slots, copy, and media.
@@ -1,12 +0,0 @@
1
- .c-process-sticky__grid{display:grid;gap:var(--space-7)}
2
- .c-process-sticky__intro .section__head{margin-bottom:var(--space-5)}
3
- .c-process-sticky__intro .btn-group:empty{display:none}
4
- .c-process-sticky__steps{list-style:none;margin:0;padding:0;display:grid;gap:var(--space-6);counter-reset:step}
5
- .c-process-sticky__steps > li{display:grid;grid-template-columns:5rem minmax(0,1fr);gap:var(--space-4);align-items:start;counter-increment:step}
6
- .c-process-sticky__steps > li > img{width:5rem;height:5rem;object-fit:cover;border-radius:var(--radius-md)}
7
- .c-process-sticky__steps > li > div{display:grid;gap:var(--space-2)}
8
- .c-process-sticky__steps h3{font-size:var(--step-1);display:flex;gap:var(--space-3);align-items:baseline}
9
- .c-process-sticky__steps h3::before{content:counter(step,decimal-leading-zero);font-size:var(--step-0);font-weight:600;color:var(--color-accent);font-variant-numeric:tabular-nums}
10
- .c-process-sticky__steps p{margin:0;color:var(--color-muted);font-size:var(--step-0);max-width:34rem}
11
- @media(min-width:900px){.c-process-sticky__grid{grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);gap:var(--space-9)}.c-process-sticky__steps{gap:var(--space-7)}.c-process-sticky__steps > li{grid-template-columns:6rem minmax(0,1fr);gap:var(--space-5)}.c-process-sticky__steps > li > img{width:6rem;height:6rem}}
12
- .c-process-sticky--dark{--color-bg:#141210;--color-text:#F7F4EF;--color-muted:#B8B0A4;--color-surface:#1E1B18;--color-surface-2:#2A2622;--color-border:#3A342E;--color-focus:#F7F4EF;background:var(--color-bg);color:var(--color-text)}
@@ -1 +0,0 @@
1
- <section class="c-process-sticky section"><div class="wrap c-process-sticky__grid"><div class="c-process-sticky__intro sticky-col"><div class="section__head"><slot name="eyebrow"></slot><slot name="heading"></slot><slot name="lede"></slot></div><div class="btn-group"><slot name="actions"></slot></div></div><ol class="c-process-sticky__steps"><slot name="steps"></slot></ol></div></section>
@@ -1,35 +0,0 @@
1
- # process-timeline
2
-
3
- Vertical timeline.
4
-
5
- - **Category:** process
6
- - **Media:** optional
7
- - **Registers:** professional, b2b, trade
8
- - **Variants:** (none)
9
-
10
- ## Slots
11
-
12
- | Slot | Content |
13
- |------|---------|
14
- | `eyebrow` | Optional `<p class="eyebrow">` |
15
- | `heading` | `<h2>` |
16
- | `lede` | Optional `<p class="lede">` (one sentence) |
17
- | `actions` | Optional button under the copy |
18
- | `steps` | 3–6 `<li>` with optional `<p class="eyebrow">` (when/duration), `<h3>`, `<p>` |
19
-
20
- ## Example
21
-
22
- ```html
23
- <process-timeline>
24
- <p slot="eyebrow" class="eyebrow eyebrow--accent">What to expect</p>
25
- <h2 slot="heading">Your first 90 days with us</h2>
26
- <p slot="lede" class="lede">We front-load the work so the rest of the year is quiet.</p>
27
- <a slot="actions" class="btn" href="/contact">Start a conversation</a>
28
- <li slot="steps"><p class="eyebrow eyebrow--accent">Week 1</p><h3>Discovery call and document intake</h3><p>We collect last year's books, bank feeds, and payroll access. One hour of your time, total.</p></li>
29
- <li slot="steps"><p class="eyebrow eyebrow--accent">Weeks 2–3</p><h3>Clean-up and chart of accounts</h3><p>We fix categorization, reconcile every account, and set up a chart that matches how you bid jobs.</p></li>
30
- <li slot="steps"><p class="eyebrow eyebrow--accent">Week 4</p><h3>First monthly close</h3><p>P&amp;L, balance sheet, and a job-cost summary — reviewed together on a 20-minute call.</p></li>
31
- <li slot="steps"><p class="eyebrow eyebrow--accent">Ongoing</p><h3>Books closed by the 5th</h3><p>Same report, same day every month. Questions answered inside one business day.</p></li>
32
- </process-timeline>
33
- ```
34
-
35
- Copy this folder into the site repo as `components/<your-name>/`, rename the root class to `c-<your-name>`, and adapt slots, copy, and media.
@@ -1,10 +0,0 @@
1
- .c-process-timeline__copy .section__head{margin-bottom:var(--space-5)}
2
- @media(min-width:720px){.c-process-timeline__copy{position:sticky;top:calc(var(--header-h) + var(--space-5))}}
3
- .c-process-timeline__list{list-style:none;margin:0;padding:0;display:grid}
4
- .c-process-timeline__list > *{position:relative;padding:0 0 var(--space-6) var(--space-7);display:grid;gap:var(--space-2)}
5
- .c-process-timeline__list > *::before{content:"";position:absolute;left:.55rem;top:.5rem;bottom:0;width:2px;background:var(--color-border)}
6
- .c-process-timeline__list > *:last-child::before{display:none}
7
- .c-process-timeline__list > *::after{content:"";position:absolute;left:0;top:.35rem;width:1.25rem;height:1.25rem;border-radius:var(--radius-pill);background:var(--color-bg);border:3px solid var(--color-accent)}
8
- .c-process-timeline__list h3{font-size:var(--step-2)}
9
- .c-process-timeline__list p{margin:0;color:var(--color-muted)}
10
- .c-process-timeline__list .eyebrow{font-size:.75rem}
@@ -1 +0,0 @@
1
- <section class="c-process-timeline section"><div class="wrap split split--top"><div class="c-process-timeline__copy"><div class="section__head"><slot name="eyebrow"></slot><slot name="heading"></slot><slot name="lede"></slot></div><div class="btn-group"><slot name="actions"></slot></div></div><ol class="c-process-timeline__list"><slot name="steps"></slot></ol></div></section>
@@ -1,34 +0,0 @@
1
- # services-cards
2
-
3
- Service cards with optional price.
4
-
5
- - **Category:** services
6
- - **Media:** card images optional
7
- - **Registers:** trade, beauty, professional, food
8
- - **Variants:** (none)
9
-
10
- ## Slots
11
-
12
- | Slot | Content |
13
- |------|---------|
14
- | `eyebrow` | Optional `<p class="eyebrow">` |
15
- | `heading` | `<h2>` |
16
- | `lede` | Optional `<p class="lede">` (one sentence) |
17
- | `actions` | Optional "View all" link/button on the head row |
18
- | `cards` | 3 or 6 `.card.card--interactive` with `.card__media.ratio-4x3`, `<h3>`, `<p>`, optional price line, and a `.btn-arrow` |
19
-
20
- ## Example
21
-
22
- ```html
23
- <services-cards>
24
- <p slot="eyebrow" class="eyebrow eyebrow--accent">Services</p>
25
- <h2 slot="heading">Everything above the gutters.</h2>
26
- <p slot="lede" class="lede">Repairs, replacements, and the maintenance that keeps you from needing either.</p>
27
- <a slot="actions" class="btn-outline" href="/services">All services</a>
28
- <article slot="cards" class="card card--interactive"><div class="card__media ratio-4x3"><img src="/media/harvest/svc-replace.jpg" alt="New architectural shingle roof" width="1200" height="900" loading="lazy"></div><div class="card__body"><h3>Roof replacement</h3><p>Asphalt, metal, and cedar. Full tear-off with deck repair included.</p><p class="c-services-cards__price">From $9,800</p><a class="btn-arrow" href="/services">Learn more</a></div></article>
29
- <article slot="cards" class="card card--interactive"><div class="card__media ratio-4x3"><img src="/media/harvest/svc-repair.jpg" alt="Repairing flashing around a chimney" width="1200" height="900" loading="lazy"></div><div class="card__body"><h3>Leak repair</h3><p>Same-week diagnosis, most repairs finished in a single visit.</p><p class="c-services-cards__price">From $450</p><a class="btn-arrow" href="/services">Learn more</a></div></article>
30
- <article slot="cards" class="card card--interactive"><div class="card__media ratio-4x3"><img src="/media/harvest/svc-gutters.jpg" alt="Seamless aluminum gutters" width="1200" height="900" loading="lazy"></div><div class="card__body"><h3>Gutters &amp; guards</h3><p>Seamless aluminum sized to your roof, with guards that actually shed pine needles.</p><p class="c-services-cards__price">From $1,900</p><a class="btn-arrow" href="/services">Learn more</a></div></article>
31
- </services-cards>
32
- ```
33
-
34
- Copy this folder into the site repo as `components/<your-name>/`, rename the root class to `c-<your-name>`, and adapt slots, copy, and media.
@@ -1,3 +0,0 @@
1
- .c-services-cards__grid .card__body{gap:var(--space-2)}
2
- .c-services-cards__price{font-weight:600;color:var(--color-text)}
3
- .c-services-cards__price{margin:0}
@@ -1 +0,0 @@
1
- <section class="c-services-cards section"><div class="wrap"><div class="section__head section__head--row"><div class="stack stack--tight"><slot name="eyebrow"></slot><slot name="heading"></slot><slot name="lede"></slot></div><div class="btn-group"><slot name="actions"></slot></div></div><div class="grid grid--3 c-services-cards__grid"><slot name="cards"></slot></div></div></section>
@@ -1,34 +0,0 @@
1
- # services-carousel
2
-
3
- Buttoned carousel for 4+ services.
4
-
5
- - **Category:** services
6
- - **Media:** card media
7
- - **Registers:** trade, beauty, food
8
- - **Variants:** (none)
9
-
10
- ## Slots
11
-
12
- | Slot | Content |
13
- |------|---------|
14
- | `eyebrow` | Optional `<p class="eyebrow">` |
15
- | `heading` | `<h2>` |
16
- | `lede` | Optional `<p class="lede">` (one sentence) |
17
- | `cards` | 4–8 `.card` slides with `.card__media.ratio-4x3`, `<h3>`, `<p>` |
18
-
19
- ## Example
20
-
21
- ```html
22
- <services-carousel>
23
- <p slot="eyebrow" class="eyebrow eyebrow--accent">Services</p>
24
- <h2 slot="heading">Cut, color, and everything in between.</h2>
25
- <p slot="lede" class="lede">Swipe or use the arrows.</p>
26
- <article slot="cards" class="card card--interactive"><div class="card__media ratio-4x3"><img src="/media/harvest/cut.jpg" alt="Precision haircut" width="1200" height="900" loading="lazy"></div><div class="card__body"><h3>Cuts</h3><p>Consultation, wash, cut, and a blow-dry finish. From $65.</p></div></article>
27
- <article slot="cards" class="card card--interactive"><div class="card__media ratio-4x3"><img src="/media/harvest/balayage.jpg" alt="Balayage highlights" width="1200" height="900" loading="lazy"></div><div class="card__body"><h3>Balayage</h3><p>Hand-painted, low-maintenance dimension. From $220.</p></div></article>
28
- <article slot="cards" class="card card--interactive"><div class="card__media ratio-4x3"><img src="/media/harvest/gloss.jpg" alt="Gloss treatment" width="1200" height="900" loading="lazy"></div><div class="card__body"><h3>Gloss &amp; toner</h3><p>Refresh tone between color appointments. From $55.</p></div></article>
29
- <article slot="cards" class="card card--interactive"><div class="card__media ratio-4x3"><img src="/media/harvest/treatment.jpg" alt="Deep conditioning treatment" width="1200" height="900" loading="lazy"></div><div class="card__body"><h3>Treatments</h3><p>Bond repair and scalp care, 30 minutes. From $45.</p></div></article>
30
- <article slot="cards" class="card card--interactive"><div class="card__media ratio-4x3"><img src="/media/harvest/updo.jpg" alt="Bridal updo" width="1200" height="900" loading="lazy"></div><div class="card__body"><h3>Event styling</h3><p>Bridal and occasion hair, on-site available. From $120.</p></div></article>
31
- </services-carousel>
32
- ```
33
-
34
- Copy this folder into the site repo as `components/<your-name>/`, rename the root class to `c-<your-name>`, and adapt slots, copy, and media.
@@ -1,6 +0,0 @@
1
- .c-services-carousel__head{display:flex;align-items:end;justify-content:space-between;gap:var(--space-5)}
2
- .c-services-carousel__head .section__head{margin-bottom:var(--space-6)}
3
- .c-services-carousel__head .carousel__nav{margin-bottom:var(--space-6);flex-shrink:0}
4
- .c-services-carousel__carousel .carousel__track{gap:var(--space-5);padding-bottom:var(--space-3)}
5
- .c-services-carousel__carousel .carousel__track > *{flex-basis:min(85%,20rem)}
6
- .c-services-carousel__carousel .card__body{gap:var(--space-2)}
@@ -1 +0,0 @@
1
- <section class="c-services-carousel section"><div class="wrap"><div class="c-services-carousel__head"><div class="section__head"><slot name="eyebrow"></slot><slot name="heading"></slot><slot name="lede"></slot></div><div class="carousel__nav"><button type="button" data-carousel-prev aria-label="Previous"><svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="m15 6-6 6 6 6"/></svg></button><button type="button" data-carousel-next aria-label="Next"><svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="m9 6 6 6-6 6"/></svg></button></div></div></div><div class="wrap carousel c-services-carousel__carousel" data-island="carousel" tabindex="0"><div class="carousel__track"><slot name="cards"></slot></div></div></section>
@@ -1,32 +0,0 @@
1
- # services-list
2
-
3
- Editorial service list with CTA per row.
4
-
5
- - **Category:** services
6
- - **Media:** optional thumbs
7
- - **Registers:** professional, trade, b2b
8
- - **Variants:** (none)
9
-
10
- ## Slots
11
-
12
- | Slot | Content |
13
- |------|---------|
14
- | `eyebrow` | Optional `<p class="eyebrow">` |
15
- | `heading` | `<h2>` |
16
- | `lede` | Optional `<p class="lede">` (one sentence) |
17
- | `rows` | 4–8 rows: `<div>` with `<span class="c-services-list__num">`, a copy `<div>` (`<h3>`, `<p>`), and a `.btn-outline.btn-sm` or `.btn-arrow` |
18
-
19
- ## Example
20
-
21
- ```html
22
- <services-list>
23
- <p slot="eyebrow" class="eyebrow eyebrow--accent">Practice areas</p>
24
- <h2 slot="heading">Focused on four things, and good at all of them.</h2>
25
- <div slot="rows"><span class="c-services-list__num">01</span><div><h3>Wills &amp; trusts</h3><p>Flat-fee estate plans, from a simple will to a revocable trust with pour-over provisions.</p></div><a class="btn-outline btn-sm" href="/practice/estate">Learn more</a></div>
26
- <div slot="rows"><span class="c-services-list__num">02</span><div><h3>Probate administration</h3><p>We handle the court filings, creditor notices, and distributions so the family doesn't have to.</p></div><a class="btn-outline btn-sm" href="/practice/probate">Learn more</a></div>
27
- <div slot="rows"><span class="c-services-list__num">03</span><div><h3>Elder law &amp; MaineCare planning</h3><p>Protect the house and qualify for care without spending down everything first.</p></div><a class="btn-outline btn-sm" href="/practice/elder">Learn more</a></div>
28
- <div slot="rows"><span class="c-services-list__num">04</span><div><h3>Small-business succession</h3><p>Buy-sell agreements and transition plans for owner-operated companies.</p></div><a class="btn-outline btn-sm" href="/practice/business">Learn more</a></div>
29
- </services-list>
30
- ```
31
-
32
- Copy this folder into the site repo as `components/<your-name>/`, rename the root class to `c-<your-name>`, and adapt slots, copy, and media.
@@ -1,85 +0,0 @@
1
- {
2
- "schemaVersion": 1,
3
- "id": "services/services-list",
4
- "revision": 1,
5
- "status": "draft",
6
- "owner": "Vitris design library",
7
- "sourceHash": "5b26a7c187d49a5ffe6d79fc5c099f6846529a748bc7b0a5127831fa3e132732",
8
- "fit": {
9
- "visitorJobs": [
10
- "Compare service scope and open the right detail"
11
- ],
12
- "pageRoles": [
13
- "service index"
14
- ],
15
- "useWhen": [
16
- "Compare service scope and open the right detail"
17
- ],
18
- "avoidWhen": [
19
- "The content or media cannot support this composition"
20
- ]
21
- },
22
- "content": {
23
- "requiredSlots": [
24
- "heading",
25
- "rows"
26
- ],
27
- "optionalSlots": [
28
- "eyebrow",
29
- "lede"
30
- ],
31
- "testedItemCounts": [
32
- 1
33
- ]
34
- },
35
- "media": {
36
- "min": 0,
37
- "max": 8,
38
- "optionalBehavior": "Recompose without empty media frames when media is optional",
39
- "aspect": [
40
- "content-dependent"
41
- ]
42
- },
43
- "composition": {
44
- "hierarchy": "numbered rows",
45
- "alignment": "left",
46
- "density": "dense",
47
- "mediaProminence": "low",
48
- "geometry": [
49
- "list",
50
- "rows"
51
- ],
52
- "boundary": "section boundary adapts to adjacent content"
53
- },
54
- "adaptation": {
55
- "flexible": [
56
- "spacing",
57
- "surface treatment",
58
- "type scale"
59
- ],
60
- "invariants": [
61
- "semantic reading order",
62
- "one clear section purpose"
63
- ],
64
- "customWhen": [
65
- "The visitor job needs a different hierarchy"
66
- ]
67
- },
68
- "responsive": {
69
- "readingOrder": "DOM order follows the visitor narrative",
70
- "reflow": "Stack or resize according to content",
71
- "crop": "Keep important subjects visible"
72
- },
73
- "interaction": {
74
- "behavior": "Native links and controls",
75
- "islands": []
76
- },
77
- "evidence": {
78
- "provenance": [
79
- "Original Vitris block source"
80
- ],
81
- "testedContexts": [],
82
- "accessibility": [],
83
- "previewManifest": "../../../design-system/block-previews/v1/services--services-list.json"
84
- }
85
- }
@@ -1,10 +0,0 @@
1
- .c-services-list__rows{display:grid;border-top:1px solid var(--color-border)}
2
- .c-services-list__rows > *{display:grid;grid-template-columns:auto 1fr;gap:var(--space-3) var(--space-5);align-items:center;padding:var(--space-5) 0;border-bottom:1px solid var(--color-border)}
3
- .c-services-list__rows > * > div{display:grid;gap:var(--space-1)}
4
- .c-services-list__rows p{color:var(--color-muted);margin:0;max-width:52rem}
5
- .c-services-list__num{font-family:var(--font-display);font-size:var(--step-1);color:var(--color-muted);font-variant-numeric:tabular-nums;min-width:2ch}
6
- .c-services-list__rows > * > a{grid-column:2;justify-self:start}
7
- @media(min-width:720px){
8
- .c-services-list__rows > *{grid-template-columns:3rem 1fr auto}
9
- .c-services-list__rows > * > a{grid-column:auto;justify-self:end}
10
- }
@@ -1 +0,0 @@
1
- <section class="c-services-list section"><div class="wrap"><div class="section__head"><slot name="eyebrow"></slot><slot name="heading"></slot><slot name="lede"></slot></div><div class="c-services-list__rows"><slot name="rows"></slot></div></div></section>
@@ -1,39 +0,0 @@
1
- # services-menu
2
-
3
- Menu-style priced items.
4
-
5
- - **Category:** services
6
- - **Media:** food photos optional
7
- - **Registers:** food, beauty
8
- - **Variants:** two-col
9
-
10
- ## Slots
11
-
12
- | Slot | Content |
13
- |------|---------|
14
- | `eyebrow` | Optional `<p class="eyebrow">` |
15
- | `heading` | `<h2>` |
16
- | `lede` | Optional `<p class="lede">` (one sentence) |
17
- | `items` | 6–12 `.c-services-menu__item` rows: copy `<div>` (`<h3>`, optional `<p>`) then a price `<span>` |
18
-
19
- ## Example
20
-
21
- ```html
22
- <services-menu>
23
- <p slot="eyebrow" class="eyebrow eyebrow--accent">Price list</p>
24
- <h2 slot="heading">Hair services</h2>
25
- <p slot="lede" class="lede">Prices are starting points; long or dense hair may add time.</p>
26
- <div slot="items" class="c-services-menu__item"><h3>Women's cut</h3><p>Consult, wash, cut, blow-dry</p><span>$65</span></div>
27
- <div slot="items" class="c-services-menu__item"><h3>Men's cut</h3><p>Includes neck trim and style</p><span>$40</span></div>
28
- <div slot="items" class="c-services-menu__item"><h3>Single-process color</h3><p>Roots or all-over</p><span>$95</span></div>
29
- <div slot="items" class="c-services-menu__item"><h3>Partial balayage</h3><p>Face-frame and crown</p><span>$160</span></div>
30
- <div slot="items" class="c-services-menu__item"><h3>Full balayage</h3><p>Includes toner and treatment</p><span>$220</span></div>
31
- <div slot="items" class="c-services-menu__item"><h3>Gloss / toner</h3><span>$55</span></div>
32
- <div slot="items" class="c-services-menu__item"><h3>Blowout</h3><span>$45</span></div>
33
- <div slot="items" class="c-services-menu__item"><h3>Bond-repair treatment</h3><span>$45</span></div>
34
- </services-menu>
35
- ```
36
-
37
- Variants: `<services-menu variant="two-col">`.
38
-
39
- Copy this folder into the site repo as `components/<your-name>/`, rename the root class to `c-<your-name>`, and adapt slots, copy, and media.
@@ -1,6 +0,0 @@
1
- .c-services-menu__grid{display:grid;gap:0 var(--space-8);max-width:44rem;margin-inline:auto}
2
- .c-services-menu__item{display:grid;grid-template-columns:1fr auto;gap:var(--space-1) var(--space-4);align-items:baseline;padding:var(--space-4) 0;border-bottom:1px solid var(--color-border)}
3
- .c-services-menu__item h3{font-size:var(--step-1);font-family:var(--font-body);font-weight:600;letter-spacing:0}
4
- .c-services-menu__item p{grid-column:1;margin:0;color:var(--color-muted);font-size:var(--step-0)}
5
- .c-services-menu__item > span{grid-column:2;grid-row:1;font-family:var(--font-display);font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}
6
- @media(min-width:900px){.c-services-menu--two-col .c-services-menu__grid{grid-template-columns:1fr 1fr;max-width:none}}
@@ -1 +0,0 @@
1
- <section class="c-services-menu section"><div class="wrap"><div class="section__head section__head--center"><slot name="eyebrow"></slot><slot name="heading"></slot><slot name="lede"></slot></div><div class="c-services-menu__grid"><slot name="items"></slot></div></div></section>
@@ -1,34 +0,0 @@
1
- # services-packages
2
-
3
- Tiered packages / retainers.
4
-
5
- - **Category:** services
6
- - **Media:** none
7
- - **Registers:** b2b, professional, trade
8
- - **Variants:** highlight-mid
9
-
10
- ## Slots
11
-
12
- | Slot | Content |
13
- |------|---------|
14
- | `eyebrow` | Optional `<p class="eyebrow">` |
15
- | `heading` | `<h2>` |
16
- | `lede` | Optional `<p class="lede">` (one sentence) |
17
- | `cards` | 3 `.card` tiers: `<h3>`, `.price`, `<p>`, `<ul class="list-check">`, button. Add `card--accent` to the recommended tier (or use the `highlight-mid` variant). |
18
-
19
- ## Example
20
-
21
- ```html
22
- <services-packages>
23
- <p slot="eyebrow" class="eyebrow eyebrow--accent">Maintenance plans</p>
24
- <h2 slot="heading">Pick a plan. We'll keep the building running.</h2>
25
- <p slot="lede" class="lede">All plans include priority scheduling and no overtime rates.</p>
26
- <div slot="cards" class="card"><div class="card__body"><h3>Essential</h3><p class="price"><span class="price__amount">$89</span><span class="price__period">/unit · yr</span></p><p>Two visits a year for buildings with newer equipment.</p><ul class="list-check"><li><svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M20 6 9 17l-5-5"/></svg>Spring &amp; fall tune-ups</li><li><svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M20 6 9 17l-5-5"/></svg>Filter changes included</li><li><svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M20 6 9 17l-5-5"/></svg>10% off repairs</li></ul><a class="btn-outline" href="/contact">Choose Essential</a></div></div>
27
- <div slot="cards" class="card card--accent"><div class="card__body"><h3>Standard</h3><p class="price"><span class="price__amount">$149</span><span class="price__period">/unit · yr</span></p><p>Quarterly visits and faster response for mixed-age systems.</p><ul class="list-check"><li><svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M20 6 9 17l-5-5"/></svg>Four visits a year</li><li><svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M20 6 9 17l-5-5"/></svg>4-hour emergency response</li><li><svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M20 6 9 17l-5-5"/></svg>15% off repairs</li><li><svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M20 6 9 17l-5-5"/></svg>Photo report after every visit</li></ul><a class="btn" href="/contact">Choose Standard</a></div></div>
28
- <div slot="cards" class="card"><div class="card__body"><h3>Complete</h3><p class="price"><span class="price__amount">$229</span><span class="price__period">/unit · yr</span></p><p>Everything covered, including parts on scheduled visits.</p><ul class="list-check"><li><svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M20 6 9 17l-5-5"/></svg>Monthly visits</li><li><svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M20 6 9 17l-5-5"/></svg>2-hour emergency response</li><li><svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M20 6 9 17l-5-5"/></svg>Parts on maintenance visits</li><li><svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M20 6 9 17l-5-5"/></svg>Annual lifecycle plan</li></ul><a class="btn-outline" href="/contact">Choose Complete</a></div></div>
29
- </services-packages>
30
- ```
31
-
32
- Variants: `<services-packages variant="highlight-mid">`.
33
-
34
- Copy this folder into the site repo as `components/<your-name>/`, rename the root class to `c-<your-name>`, and adapt slots, copy, and media.
@@ -1,6 +0,0 @@
1
- .c-services-packages__grid{align-items:stretch}
2
- .c-services-packages__grid .card__body{padding:var(--space-6);gap:var(--space-4)}
3
- .c-services-packages__grid .card__body > h3{font-size:var(--step-1);font-family:var(--font-body);letter-spacing:.02em;text-transform:uppercase;color:var(--color-muted)}
4
- .c-services-packages__grid .list-check{margin-top:var(--space-2);padding-top:var(--space-4);border-top:1px solid var(--color-border)}
5
- .c-services-packages__grid .card__body > .btn,.c-services-packages__grid .card__body > .btn-outline{margin-top:auto;justify-self:stretch}
6
- .c-services-packages--highlight-mid .c-services-packages__grid > :nth-child(2){border-color:var(--color-accent);box-shadow:0 0 0 1px var(--color-accent),var(--shadow-2)}
@@ -1 +0,0 @@
1
- <section class="c-services-packages section section--muted"><div class="wrap"><div class="section__head section__head--center"><slot name="eyebrow"></slot><slot name="heading"></slot><slot name="lede"></slot></div><div class="grid grid--3 c-services-packages__grid"><slot name="cards"></slot></div></div></section>
@@ -1,36 +0,0 @@
1
- # services-panels
2
-
3
- Horizontal photo panels — the hovered or focused one expands.
4
-
5
- - **Category:** services
6
- - **Media:** one photo per service
7
- - **Registers:** professional, beauty, trade
8
- - **Variants:** (none)
9
-
10
- ## Slots
11
-
12
- | Slot | Content |
13
- |------|---------|
14
- | `eyebrow` | Optional `<p class="eyebrow">` |
15
- | `heading` | `<h2>` |
16
- | `lede` | Optional `<p class="lede">` (one sentence) |
17
- | `actions` | Optional 1–2 buttons / `.btn-arrow` links |
18
- | `panels` | 4–6 `<a class="photo-card" href><img><div class="photo-card__body"><h3>…</h3><p>…</p></div></a>` |
19
-
20
- ## Example
21
-
22
- ```html
23
- <services-panels>
24
- <p slot="eyebrow" class="eyebrow eyebrow--accent">Our services</p>
25
- <h2 slot="heading">Trusted legal help across five practice areas.</h2>
26
- <p slot="lede" class="lede">Every business hits moments where good legal advice really matters. Each area is led by a senior partner.</p>
27
- <a slot="actions" class="btn-arrow" href="/services">All services <svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg></a>
28
- <a slot="panels" class="photo-card" href="/services/business-law"><img src="/media/harvest/svc-1.jpg" alt="" width="1200" height="1500" loading="lazy"><div class="photo-card__body"><h3>Business law</h3><p>Contracts, deals, and partnerships that survive the tough conversations.</p></div></a>
29
- <a slot="panels" class="photo-card" href="/services/disputes"><img src="/media/harvest/svc-2.jpg" alt="" width="1200" height="1500" loading="lazy"><div class="photo-card__body"><h3>Lawsuits &amp; disputes</h3><p>From first filing to final ruling.</p></div></a>
30
- <a slot="panels" class="photo-card" href="/services/compliance"><img src="/media/harvest/svc-3.jpg" alt="" width="1200" height="1500" loading="lazy"><div class="photo-card__body"><h3>Compliance</h3><p>Steady guidance with regulators.</p></div></a>
31
- <a slot="panels" class="photo-card" href="/services/ip"><img src="/media/harvest/svc-4.jpg" alt="" width="1200" height="1500" loading="lazy"><div class="photo-card__body"><h3>Intellectual property</h3><p>Patents, secrets, and brands.</p></div></a>
32
- <a slot="panels" class="photo-card" href="/services/restructuring"><img src="/media/harvest/svc-5.jpg" alt="" width="1200" height="1500" loading="lazy"><div class="photo-card__body"><h3>Restructuring</h3><p>Workouts and creditor protection.</p></div></a>
33
- </services-panels>
34
- ```
35
-
36
- Copy this folder into the site repo as `components/<your-name>/`, rename the root class to `c-<your-name>`, and adapt slots, copy, and media.