@tryvitris/website-harness 0.1.0-beta.5 → 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.
- package/README.md +6 -4
- package/agent/graph.yaml +0 -2
- package/agent/refs/components.md +5 -41
- package/agent/refs/compose.md +1 -1
- package/agent/refs/implement.md +2 -2
- package/agent/refs/jev.md +1 -1
- package/agent/refs/layout.md +1 -1
- package/agent/refs/storyboard.md +1 -1
- package/agent/refs/template-adaptation.md +1 -1
- package/bin/api/agent/evaluate.js +10 -15
- package/bin/api/agent/grade.js +10 -15
- package/bin/api/cli/api.js +18 -23
- package/bin/api/cli.js +20 -25
- package/bin/api/engine.js +11 -16
- package/bin/api/hosting.js +12 -17
- package/bin/api/index.js +2 -3
- package/bin/api/references.js +1 -2
- package/bin/api/render.js +2 -4
- package/bin/chunks/{chunk-4GZCAWWK.js → chunk-4MFPATAB.js} +2 -4
- package/bin/chunks/{chunk-5OOPJNGN.js → chunk-5JTBC6UK.js} +1 -4
- package/bin/chunks/{chunk-Z2UNY47A.js → chunk-5YSPWKFF.js} +1 -1
- package/bin/chunks/{chunk-FYN4T4SV.js → chunk-7V3OKLKH.js} +15 -26
- package/bin/chunks/{chunk-3CTBXY5K.js → chunk-FRABKM65.js} +1936 -1899
- package/bin/chunks/{chunk-4DM5TTLG.js → chunk-H7Y72HXC.js} +5 -5
- package/bin/chunks/{chunk-R7YELY3C.js → chunk-HL6JVA4A.js} +100 -81
- package/bin/chunks/{chunk-54JC5L35.js → chunk-O55LAQ2C.js} +3 -5
- package/bin/chunks/{chunk-VH7PM7KJ.js → chunk-P56ZDMX7.js} +4 -6
- package/bin/chunks/{chunk-7VLBEAFW.js → chunk-PGFFKPK6.js} +2 -2
- package/bin/chunks/{chunk-YQYHROLZ.js → chunk-QRWGFLUU.js} +2 -2
- package/bin/chunks/{chunk-CBEJZO4L.js → chunk-TTAUU3AZ.js} +2 -2
- package/bin/chunks/{chunk-E5Y46VBX.js → chunk-VTI32UGJ.js} +200 -103
- package/bin/chunks/{chunk-DRJQ4OOU.js → chunk-WOORR67N.js} +0 -45
- package/bin/chunks/{chunk-B5I45LFD.js → chunk-YZWEXHT4.js} +11 -13
- package/bin/chunks/{chunk-YCVGD2CG.js → chunk-ZIROO2U4.js} +1204 -1176
- package/bin/chunks/{chunk-42IXFXUD.js → chunk-ZWFG4GPG.js} +11 -15
- package/bin/chunks/{design-context-store-IAT2P2OC.js → design-context-store-DCZOAK56.js} +10 -15
- package/bin/chunks/{packets-VBMY4SQJ.js → packets-QOLWPRNV.js} +10 -15
- package/bin/chunks/{policy-2I37JUU3.js → policy-MP2JZXI3.js} +1 -1
- package/bin/chunks/{preparation-S4MG3RPL.js → preparation-T2IOD5SJ.js} +10 -15
- package/bin/chunks/{questions-HKELBDFL.js → questions-XK545GCX.js} +1 -11
- package/bin/types/src/agent/composition-authoring.d.ts +2 -2
- package/bin/types/src/agent/jev/calibration.d.ts +2 -2
- package/bin/types/src/agent/jev/config.d.ts +1 -1
- package/bin/types/src/agent/jev/questions.d.ts +0 -10
- package/bin/types/src/agent/jev/types.d.ts +0 -2
- package/bin/types/src/agent/site-inputs.d.ts +9 -1
- package/bin/types/src/agent/template-catalog.d.ts +20 -0
- package/bin/types/src/agent/theme-selection.d.ts +4 -2
- package/bin/types/src/build/archives.d.ts +2 -0
- package/bin/vitris-art.js +10 -15
- package/bin/vitris-build.js +3 -5
- package/bin/vitris-create-site.js +12 -17
- package/bin/vitris-cursor-hook.js +10 -15
- package/bin/vitris-eval.js +12 -17
- package/bin/vitris-go.js +14 -19
- package/bin/vitris-harvest.js +11 -16
- package/bin/vitris-knowledge.js +11 -16
- package/bin/vitris-launch-preflight.js +11 -17
- package/bin/vitris-motion-view.js +13 -19
- package/bin/vitris-references.js +4 -7
- package/bin/vitris-refresh.js +11 -16
- package/bin/vitris-stock.js +1 -1
- package/bin/vitris-themes.js +10 -15
- package/bin/vitris-upgrade.js +11 -16
- package/bin/vitris-verify-browser.js +43 -8
- package/bin/vitris-verify-performance.js +3 -5
- package/bin/vitris.js +20 -25
- package/design-system/MASTER.md +2 -2
- package/docs/CLI.md +2 -1
- package/docs/DISTRIBUTION.md +1 -1
- package/package.json +2 -7
- package/templates/site/README.md +2 -0
- package/templates/site/gitignore +1 -0
- package/bin/chunks/chunk-6H3T46F5.js +0 -25
- package/bin/chunks/chunk-ANMJRJQ5.js +0 -31
- package/bin/chunks/chunk-FOXUQXTV.js +0 -278
- package/bin/chunks/chunk-HNORQ74T.js +0 -40
- package/bin/chunks/chunk-T7DGRVTP.js +0 -458
- package/bin/types/src/agent/jev/block-catalog.d.ts +0 -95
- package/bin/types/src/agent/jev/component-select.d.ts +0 -102
- package/bin/types/src/blocks/library-profile.d.ts +0 -9
- package/bin/types/src/blocks/metadata.d.ts +0 -65
- package/bin/vitris-blocks.js +0 -238
- package/blocks/CONVENTIONS.md +0 -121
- package/blocks/INDEX.md +0 -130
- package/blocks/about/about-awards/README.md +0 -36
- package/blocks/about/about-awards/styles.css +0 -13
- package/blocks/about/about-awards/template.html +0 -1
- package/blocks/about/about-credentials/README.md +0 -33
- package/blocks/about/about-credentials/block.meta.json +0 -85
- package/blocks/about/about-credentials/styles.css +0 -4
- package/blocks/about/about-credentials/template.html +0 -1
- package/blocks/about/about-founder/README.md +0 -35
- package/blocks/about/about-founder/styles.css +0 -9
- package/blocks/about/about-founder/template.html +0 -1
- package/blocks/about/about-mission/README.md +0 -31
- package/blocks/about/about-mission/styles.css +0 -5
- package/blocks/about/about-mission/template.html +0 -1
- package/blocks/about/about-statement/README.md +0 -28
- package/blocks/about/about-statement/styles.css +0 -7
- package/blocks/about/about-statement/template.html +0 -1
- package/blocks/about/about-story/README.md +0 -35
- package/blocks/about/about-story/styles.css +0 -5
- package/blocks/about/about-story/template.html +0 -1
- package/blocks/about/about-timeline/README.md +0 -33
- package/blocks/about/about-timeline/styles.css +0 -8
- package/blocks/about/about-timeline/template.html +0 -1
- package/blocks/about/about-values/README.md +0 -31
- package/blocks/about/about-values/styles.css +0 -3
- package/blocks/about/about-values/template.html +0 -1
- package/blocks/blog/blog-featured/README.md +0 -39
- package/blocks/blog/blog-featured/styles.css +0 -12
- package/blocks/blog/blog-featured/template.html +0 -1
- package/blocks/blog/blog-index/README.md +0 -34
- package/blocks/blog/blog-index/styles.css +0 -6
- package/blocks/blog/blog-index/template.html +0 -1
- package/blocks/blog/blog-post-header/README.md +0 -31
- package/blocks/blog/blog-post-header/styles.css +0 -8
- package/blocks/blog/blog-post-header/template.html +0 -1
- package/blocks/contact/contact-cards/README.md +0 -32
- package/blocks/contact/contact-cards/styles.css +0 -7
- package/blocks/contact/contact-cards/template.html +0 -1
- package/blocks/contact/contact-chips/README.md +0 -41
- package/blocks/contact/contact-chips/styles.css +0 -13
- package/blocks/contact/contact-chips/template.html +0 -1
- package/blocks/contact/contact-hours/README.md +0 -41
- package/blocks/contact/contact-hours/block.meta.json +0 -87
- package/blocks/contact/contact-hours/styles.css +0 -8
- package/blocks/contact/contact-hours/template.html +0 -1
- package/blocks/contact/contact-map/README.md +0 -39
- package/blocks/contact/contact-map/styles.css +0 -10
- package/blocks/contact/contact-map/template.html +0 -1
- package/blocks/contact/contact-offices/README.md +0 -32
- package/blocks/contact/contact-offices/styles.css +0 -8
- package/blocks/contact/contact-offices/template.html +0 -1
- package/blocks/contact/contact-phone-first/README.md +0 -33
- package/blocks/contact/contact-phone-first/block.meta.json +0 -86
- package/blocks/contact/contact-phone-first/styles.css +0 -11
- package/blocks/contact/contact-phone-first/template.html +0 -1
- package/blocks/contact/contact-split/README.md +0 -43
- package/blocks/contact/contact-split/styles.css +0 -12
- package/blocks/contact/contact-split/template.html +0 -1
- package/blocks/contact/contact-visit/README.md +0 -36
- package/blocks/contact/contact-visit/block.meta.json +0 -88
- package/blocks/contact/contact-visit/styles.css +0 -13
- package/blocks/contact/contact-visit/template.html +0 -1
- package/blocks/contact/service-areas/README.md +0 -32
- package/blocks/contact/service-areas/styles.css +0 -9
- package/blocks/contact/service-areas/template.html +0 -1
- package/blocks/content/glossary/README.md +0 -35
- package/blocks/content/glossary/styles.css +0 -6
- package/blocks/content/glossary/template.html +0 -1
- package/blocks/content/list-split/README.md +0 -33
- package/blocks/content/list-split/styles.css +0 -13
- package/blocks/content/list-split/template.html +0 -1
- package/blocks/content/prose-split/README.md +0 -32
- package/blocks/content/prose-split/styles.css +0 -12
- package/blocks/content/prose-split/template.html +0 -1
- package/blocks/content/specification-ledger/README.md +0 -32
- package/blocks/content/specification-ledger/block.meta.json +0 -85
- package/blocks/content/specification-ledger/styles.css +0 -10
- package/blocks/content/specification-ledger/template.html +0 -1
- package/blocks/cta/cta-band/README.md +0 -33
- package/blocks/cta/cta-band/styles.css +0 -11
- package/blocks/cta/cta-band/template.html +0 -1
- package/blocks/cta/cta-card/README.md +0 -35
- package/blocks/cta/cta-card/styles.css +0 -8
- package/blocks/cta/cta-card/template.html +0 -1
- package/blocks/cta/cta-floating-bar/README.md +0 -28
- package/blocks/cta/cta-floating-bar/styles.css +0 -8
- package/blocks/cta/cta-floating-bar/template.html +0 -1
- package/blocks/cta/cta-inline/README.md +0 -30
- package/blocks/cta/cta-inline/styles.css +0 -9
- package/blocks/cta/cta-inline/template.html +0 -1
- package/blocks/cta/cta-newsletter/README.md +0 -34
- package/blocks/cta/cta-newsletter/styles.css +0 -8
- package/blocks/cta/cta-newsletter/template.html +0 -1
- package/blocks/cta/cta-photo-fan/README.md +0 -36
- package/blocks/cta/cta-photo-fan/styles.css +0 -14
- package/blocks/cta/cta-photo-fan/template.html +0 -1
- package/blocks/cta/cta-split/README.md +0 -38
- package/blocks/cta/cta-split/styles.css +0 -10
- package/blocks/cta/cta-split/template.html +0 -1
- package/blocks/faq/faq-accordion/README.md +0 -36
- package/blocks/faq/faq-accordion/styles.css +0 -6
- package/blocks/faq/faq-accordion/template.html +0 -1
- package/blocks/faq/faq-grouped/README.md +0 -40
- package/blocks/faq/faq-grouped/styles.css +0 -20
- package/blocks/faq/faq-grouped/template.html +0 -1
- package/blocks/faq/faq-split/README.md +0 -37
- package/blocks/faq/faq-split/styles.css +0 -5
- package/blocks/faq/faq-split/template.html +0 -1
- package/blocks/faq/faq-tabs/README.md +0 -36
- package/blocks/faq/faq-tabs/styles.css +0 -3
- package/blocks/faq/faq-tabs/template.html +0 -1
- package/blocks/feature/feature-bento/README.md +0 -33
- package/blocks/feature/feature-bento/styles.css +0 -7
- package/blocks/feature/feature-bento/template.html +0 -1
- package/blocks/feature/feature-compare-table/README.md +0 -44
- package/blocks/feature/feature-compare-table/styles.css +0 -15
- package/blocks/feature/feature-compare-table/template.html +0 -1
- package/blocks/feature/feature-comparison/README.md +0 -34
- package/blocks/feature/feature-comparison/styles.css +0 -6
- package/blocks/feature/feature-comparison/template.html +0 -1
- package/blocks/feature/feature-grid-3/README.md +0 -34
- package/blocks/feature/feature-grid-3/styles.css +0 -8
- package/blocks/feature/feature-grid-3/template.html +0 -1
- package/blocks/feature/feature-icon-list/README.md +0 -39
- package/blocks/feature/feature-icon-list/styles.css +0 -9
- package/blocks/feature/feature-icon-list/template.html +0 -1
- package/blocks/feature/feature-spotlight/README.md +0 -39
- package/blocks/feature/feature-spotlight/styles.css +0 -5
- package/blocks/feature/feature-spotlight/template.html +0 -1
- package/blocks/feature/feature-stats-band/README.md +0 -33
- package/blocks/feature/feature-stats-band/styles.css +0 -8
- package/blocks/feature/feature-stats-band/template.html +0 -1
- package/blocks/feature/feature-tabs/README.md +0 -38
- package/blocks/feature/feature-tabs/styles.css +0 -7
- package/blocks/feature/feature-tabs/template.html +0 -1
- package/blocks/feature/feature-thumb-list/README.md +0 -38
- package/blocks/feature/feature-thumb-list/styles.css +0 -13
- package/blocks/feature/feature-thumb-list/template.html +0 -1
- package/blocks/feature/feature-zigzag/README.md +0 -31
- package/blocks/feature/feature-zigzag/styles.css +0 -6
- package/blocks/feature/feature-zigzag/template.html +0 -1
- package/blocks/footer/footer-columns/README.md +0 -39
- package/blocks/footer/footer-columns/styles.css +0 -16
- package/blocks/footer/footer-columns/template.html +0 -1
- package/blocks/footer/footer-compact/README.md +0 -33
- package/blocks/footer/footer-compact/styles.css +0 -12
- package/blocks/footer/footer-compact/template.html +0 -1
- package/blocks/footer/footer-cta/README.md +0 -37
- package/blocks/footer/footer-cta/styles.css +0 -18
- package/blocks/footer/footer-cta/template.html +0 -1
- package/blocks/footer/footer-social/README.md +0 -37
- package/blocks/footer/footer-social/styles.css +0 -17
- package/blocks/footer/footer-social/template.html +0 -1
- package/blocks/footer/footer-wordmark/README.md +0 -40
- package/blocks/footer/footer-wordmark/styles.css +0 -19
- package/blocks/footer/footer-wordmark/template.html +0 -1
- package/blocks/gallery/gallery-before-after/README.md +0 -31
- package/blocks/gallery/gallery-before-after/styles.css +0 -6
- package/blocks/gallery/gallery-before-after/template.html +0 -1
- package/blocks/gallery/gallery-carousel/README.md +0 -32
- package/blocks/gallery/gallery-carousel/styles.css +0 -7
- package/blocks/gallery/gallery-carousel/template.html +0 -1
- package/blocks/gallery/gallery-grid/README.md +0 -39
- package/blocks/gallery/gallery-grid/styles.css +0 -13
- package/blocks/gallery/gallery-grid/template.html +0 -1
- package/blocks/gallery/gallery-masonry/README.md +0 -33
- package/blocks/gallery/gallery-masonry/styles.css +0 -4
- package/blocks/gallery/gallery-masonry/template.html +0 -1
- package/blocks/gallery/gallery-mosaic-split/README.md +0 -40
- package/blocks/gallery/gallery-mosaic-split/styles.css +0 -15
- package/blocks/gallery/gallery-mosaic-split/template.html +0 -1
- package/blocks/hero/hero-asymmetric/README.md +0 -34
- package/blocks/hero/hero-asymmetric/styles.css +0 -13
- package/blocks/hero/hero-asymmetric/template.html +0 -10
- package/blocks/hero/hero-before-after/README.md +0 -38
- package/blocks/hero/hero-before-after/styles.css +0 -8
- package/blocks/hero/hero-before-after/template.html +0 -19
- package/blocks/hero/hero-editorial/README.md +0 -34
- package/blocks/hero/hero-editorial/block.meta.json +0 -85
- package/blocks/hero/hero-editorial/styles.css +0 -6
- package/blocks/hero/hero-editorial/template.html +0 -10
- package/blocks/hero/hero-evidence/README.md +0 -32
- package/blocks/hero/hero-evidence/block.meta.json +0 -85
- package/blocks/hero/hero-evidence/styles.css +0 -13
- package/blocks/hero/hero-evidence/template.html +0 -1
- package/blocks/hero/hero-form/README.md +0 -46
- package/blocks/hero/hero-form/styles.css +0 -11
- package/blocks/hero/hero-form/template.html +0 -15
- package/blocks/hero/hero-menu/README.md +0 -36
- package/blocks/hero/hero-menu/styles.css +0 -7
- package/blocks/hero/hero-menu/template.html +0 -10
- package/blocks/hero/hero-overlay/README.md +0 -35
- package/blocks/hero/hero-overlay/styles.css +0 -14
- package/blocks/hero/hero-overlay/template.html +0 -10
- package/blocks/hero/hero-page/README.md +0 -35
- package/blocks/hero/hero-page/styles.css +0 -19
- package/blocks/hero/hero-page/template.html +0 -1
- package/blocks/hero/hero-product/README.md +0 -41
- package/blocks/hero/hero-product/styles.css +0 -11
- package/blocks/hero/hero-product/template.html +0 -14
- package/blocks/hero/hero-service/README.md +0 -37
- package/blocks/hero/hero-service/block.meta.json +0 -85
- package/blocks/hero/hero-service/styles.css +0 -17
- package/blocks/hero/hero-service/template.html +0 -1
- package/blocks/hero/hero-split/README.md +0 -36
- package/blocks/hero/hero-split/styles.css +0 -7
- package/blocks/hero/hero-split/template.html +0 -11
- package/blocks/hero/hero-statement/README.md +0 -33
- package/blocks/hero/hero-statement/styles.css +0 -8
- package/blocks/hero/hero-statement/template.html +0 -1
- package/blocks/hero/hero-stats/README.md +0 -37
- package/blocks/hero/hero-stats/styles.css +0 -10
- package/blocks/hero/hero-stats/template.html +0 -10
- package/blocks/hero/hero-video-still/README.md +0 -36
- package/blocks/hero/hero-video-still/styles.css +0 -9
- package/blocks/hero/hero-video-still/template.html +0 -13
- package/blocks/icons.md +0 -44
- package/blocks/incentives/incentive-banner/README.md +0 -28
- package/blocks/incentives/incentive-banner/styles.css +0 -7
- package/blocks/incentives/incentive-banner/template.html +0 -1
- package/blocks/incentives/incentive-cards/README.md +0 -31
- package/blocks/incentives/incentive-cards/styles.css +0 -4
- package/blocks/incentives/incentive-cards/template.html +0 -1
- package/blocks/navbar/nav-announcement/README.md +0 -35
- package/blocks/navbar/nav-announcement/styles.css +0 -10
- package/blocks/navbar/nav-announcement/template.html +0 -14
- package/blocks/navbar/nav-centered/README.md +0 -35
- package/blocks/navbar/nav-centered/styles.css +0 -11
- package/blocks/navbar/nav-centered/template.html +0 -12
- package/blocks/navbar/nav-minimal/README.md +0 -29
- package/blocks/navbar/nav-minimal/styles.css +0 -5
- package/blocks/navbar/nav-minimal/template.html +0 -6
- package/blocks/navbar/nav-split/README.md +0 -34
- package/blocks/navbar/nav-split/styles.css +0 -11
- package/blocks/navbar/nav-split/template.html +0 -11
- package/blocks/navbar/nav-utility/README.md +0 -37
- package/blocks/navbar/nav-utility/styles.css +0 -17
- package/blocks/navbar/nav-utility/template.html +0 -12
- package/blocks/pricing/menu-featured/README.md +0 -34
- package/blocks/pricing/menu-featured/styles.css +0 -4
- package/blocks/pricing/menu-featured/template.html +0 -1
- package/blocks/pricing/menu-sections/README.md +0 -33
- package/blocks/pricing/menu-sections/styles.css +0 -9
- package/blocks/pricing/menu-sections/template.html +0 -1
- package/blocks/pricing/pricing-table/README.md +0 -40
- package/blocks/pricing/pricing-table/styles.css +0 -9
- package/blocks/pricing/pricing-table/template.html +0 -1
- package/blocks/pricing/pricing-tiers/README.md +0 -34
- package/blocks/pricing/pricing-tiers/styles.css +0 -7
- package/blocks/pricing/pricing-tiers/template.html +0 -1
- package/blocks/pricing/pricing-toggle/README.md +0 -34
- package/blocks/pricing/pricing-toggle/styles.css +0 -10
- package/blocks/pricing/pricing-toggle/template.html +0 -1
- package/blocks/process/process-carousel/README.md +0 -33
- package/blocks/process/process-carousel/styles.css +0 -5
- package/blocks/process/process-carousel/template.html +0 -1
- package/blocks/process/process-split/README.md +0 -35
- package/blocks/process/process-split/styles.css +0 -6
- package/blocks/process/process-split/template.html +0 -1
- package/blocks/process/process-stepper/README.md +0 -40
- package/blocks/process/process-stepper/styles.css +0 -11
- package/blocks/process/process-stepper/template.html +0 -1
- package/blocks/process/process-steps/README.md +0 -35
- package/blocks/process/process-steps/styles.css +0 -6
- package/blocks/process/process-steps/template.html +0 -1
- package/blocks/process/process-sticky/README.md +0 -38
- package/blocks/process/process-sticky/styles.css +0 -12
- package/blocks/process/process-sticky/template.html +0 -1
- package/blocks/process/process-timeline/README.md +0 -35
- package/blocks/process/process-timeline/styles.css +0 -10
- package/blocks/process/process-timeline/template.html +0 -1
- package/blocks/services/services-cards/README.md +0 -34
- package/blocks/services/services-cards/styles.css +0 -3
- package/blocks/services/services-cards/template.html +0 -1
- package/blocks/services/services-carousel/README.md +0 -34
- package/blocks/services/services-carousel/styles.css +0 -6
- package/blocks/services/services-carousel/template.html +0 -1
- package/blocks/services/services-list/README.md +0 -32
- package/blocks/services/services-list/block.meta.json +0 -85
- package/blocks/services/services-list/styles.css +0 -10
- package/blocks/services/services-list/template.html +0 -1
- package/blocks/services/services-menu/README.md +0 -39
- package/blocks/services/services-menu/styles.css +0 -6
- package/blocks/services/services-menu/template.html +0 -1
- package/blocks/services/services-packages/README.md +0 -34
- package/blocks/services/services-packages/styles.css +0 -6
- package/blocks/services/services-packages/template.html +0 -1
- package/blocks/services/services-panels/README.md +0 -36
- package/blocks/services/services-panels/styles.css +0 -15
- package/blocks/services/services-panels/template.html +0 -1
- package/blocks/services/services-photo-grid/README.md +0 -39
- package/blocks/services/services-photo-grid/styles.css +0 -10
- package/blocks/services/services-photo-grid/template.html +0 -1
- package/blocks/services/services-priority/README.md +0 -33
- package/blocks/services/services-priority/block.meta.json +0 -86
- package/blocks/services/services-priority/styles.css +0 -16
- package/blocks/services/services-priority/template.html +0 -1
- package/blocks/stats/stats-cards/README.md +0 -31
- package/blocks/stats/stats-cards/styles.css +0 -4
- package/blocks/stats/stats-cards/template.html +0 -1
- package/blocks/stats/stats-mosaic/README.md +0 -27
- package/blocks/stats/stats-mosaic/styles.css +0 -9
- package/blocks/stats/stats-mosaic/template.html +0 -1
- package/blocks/stats/stats-row/README.md +0 -29
- package/blocks/stats/stats-row/styles.css +0 -8
- package/blocks/stats/stats-row/template.html +0 -1
- package/blocks/stats/stats-split/README.md +0 -35
- package/blocks/stats/stats-split/styles.css +0 -3
- package/blocks/stats/stats-split/template.html +0 -1
- package/blocks/team/team-featured/README.md +0 -42
- package/blocks/team/team-featured/styles.css +0 -9
- package/blocks/team/team-featured/template.html +0 -1
- package/blocks/team/team-grid/README.md +0 -35
- package/blocks/team/team-grid/styles.css +0 -8
- package/blocks/team/team-grid/template.html +0 -1
- package/blocks/team/team-list/README.md +0 -32
- package/blocks/team/team-list/styles.css +0 -7
- package/blocks/team/team-list/template.html +0 -1
- package/blocks/testimonial/testimonial-carousel/README.md +0 -32
- package/blocks/testimonial/testimonial-carousel/styles.css +0 -7
- package/blocks/testimonial/testimonial-carousel/template.html +0 -1
- package/blocks/testimonial/testimonial-grid/README.md +0 -32
- package/blocks/testimonial/testimonial-grid/styles.css +0 -5
- package/blocks/testimonial/testimonial-grid/template.html +0 -1
- package/blocks/testimonial/testimonial-mosaic/README.md +0 -38
- package/blocks/testimonial/testimonial-mosaic/styles.css +0 -14
- package/blocks/testimonial/testimonial-mosaic/template.html +0 -1
- package/blocks/testimonial/testimonial-platform/README.md +0 -34
- package/blocks/testimonial/testimonial-platform/styles.css +0 -17
- package/blocks/testimonial/testimonial-platform/template.html +0 -1
- package/blocks/testimonial/testimonial-rating/README.md +0 -28
- package/blocks/testimonial/testimonial-rating/styles.css +0 -6
- package/blocks/testimonial/testimonial-rating/template.html +0 -1
- package/blocks/testimonial/testimonial-spotlight/README.md +0 -31
- package/blocks/testimonial/testimonial-spotlight/styles.css +0 -9
- package/blocks/testimonial/testimonial-spotlight/template.html +0 -1
- package/blocks/testimonial/testimonial-switcher/README.md +0 -39
- package/blocks/testimonial/testimonial-switcher/styles.css +0 -23
- package/blocks/testimonial/testimonial-switcher/template.html +0 -1
- package/blocks/testimonial/testimonial-wall/README.md +0 -34
- package/blocks/testimonial/testimonial-wall/styles.css +0 -7
- package/blocks/testimonial/testimonial-wall/template.html +0 -1
- package/blocks/trust-strip/trust-badges/README.md +0 -30
- package/blocks/trust-strip/trust-badges/styles.css +0 -5
- package/blocks/trust-strip/trust-badges/template.html +0 -1
- package/blocks/trust-strip/trust-certs/README.md +0 -31
- package/blocks/trust-strip/trust-certs/styles.css +0 -12
- package/blocks/trust-strip/trust-certs/template.html +0 -1
- package/blocks/trust-strip/trust-logos/README.md +0 -32
- package/blocks/trust-strip/trust-logos/styles.css +0 -5
- package/blocks/trust-strip/trust-logos/template.html +0 -1
- package/blocks/trust-strip/trust-quote/README.md +0 -29
- package/blocks/trust-strip/trust-quote/styles.css +0 -5
- package/blocks/trust-strip/trust-quote/template.html +0 -1
- package/blocks/trust-strip/trust-reviews/README.md +0 -35
- package/blocks/trust-strip/trust-reviews/styles.css +0 -9
- package/blocks/trust-strip/trust-reviews/template.html +0 -1
- package/blocks/work/case-alternating/README.md +0 -34
- package/blocks/work/case-alternating/block.meta.json +0 -86
- package/blocks/work/case-alternating/styles.css +0 -7
- package/blocks/work/case-alternating/template.html +0 -1
- package/blocks/work/case-carousel/README.md +0 -26
- package/blocks/work/case-carousel/styles.css +0 -7
- package/blocks/work/case-carousel/template.html +0 -1
- package/blocks/work/case-header/README.md +0 -38
- package/blocks/work/case-header/styles.css +0 -18
- package/blocks/work/case-header/template.html +0 -1
- package/blocks/work/project-evidence/README.md +0 -35
- package/blocks/work/project-evidence/block.meta.json +0 -87
- package/blocks/work/project-evidence/styles.css +0 -12
- package/blocks/work/project-evidence/template.html +0 -1
- package/blocks/work/project-grid/README.md +0 -38
- package/blocks/work/project-grid/styles.css +0 -9
- package/blocks/work/project-grid/template.html +0 -1
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
# trust-reviews
|
|
2
|
-
|
|
3
|
-
Avatar cluster + rating line + review-platform marks.
|
|
4
|
-
|
|
5
|
-
- **Category:** trust-strip
|
|
6
|
-
- **Media:** 3–5 tiny portraits, 2–4 platform marks
|
|
7
|
-
- **Registers:** trade, beauty, food, professional
|
|
8
|
-
- **Variants:** center
|
|
9
|
-
|
|
10
|
-
## Slots
|
|
11
|
-
|
|
12
|
-
| Slot | Content |
|
|
13
|
-
|------|---------|
|
|
14
|
-
| `avatars` | 3–5 `<img class="avatar">` |
|
|
15
|
-
| `rating` | `<p>` stars + `<strong>4.9</strong>` + count |
|
|
16
|
-
| `platforms` | Optional 2–4 `<img>` platform marks (~120×32) |
|
|
17
|
-
|
|
18
|
-
## Example
|
|
19
|
-
|
|
20
|
-
```html
|
|
21
|
-
<trust-reviews>
|
|
22
|
-
<img slot="avatars" src="/media/harvest/avatar-1.jpg" alt="" width="96" height="96" class="avatar">
|
|
23
|
-
<img slot="avatars" src="/media/harvest/avatar-2.jpg" alt="" width="96" height="96" class="avatar">
|
|
24
|
-
<img slot="avatars" src="/media/harvest/avatar-3.jpg" alt="" width="96" height="96" class="avatar">
|
|
25
|
-
<img slot="avatars" src="/media/harvest/avatar-4.jpg" alt="" width="96" height="96" class="avatar">
|
|
26
|
-
<p slot="rating"><span class="rating" aria-label="5 out of 5 stars"><svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 3l2.6 5.3L20 9.2l-4 3.9.9 5.4L12 15.9 7.1 18.5 8 13.1 4 9.2l5.4-.9L12 3z"/></svg><svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 3l2.6 5.3L20 9.2l-4 3.9.9 5.4L12 15.9 7.1 18.5 8 13.1 4 9.2l5.4-.9L12 3z"/></svg><svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 3l2.6 5.3L20 9.2l-4 3.9.9 5.4L12 15.9 7.1 18.5 8 13.1 4 9.2l5.4-.9L12 3z"/></svg><svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 3l2.6 5.3L20 9.2l-4 3.9.9 5.4L12 15.9 7.1 18.5 8 13.1 4 9.2l5.4-.9L12 3z"/></svg><svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 3l2.6 5.3L20 9.2l-4 3.9.9 5.4L12 15.9 7.1 18.5 8 13.1 4 9.2l5.4-.9L12 3z"/></svg></span> <strong>4.9</strong> from 1,800+ clients</p>
|
|
27
|
-
<img src="/media/harvest/logo-google.svg" alt="Google" width="120" height="32" slot="platforms">
|
|
28
|
-
<img src="/media/harvest/logo-yelp.svg" alt="Yelp" width="120" height="32" slot="platforms">
|
|
29
|
-
<img src="/media/harvest/logo-avvo.svg" alt="Avvo" width="120" height="32" slot="platforms">
|
|
30
|
-
</trust-reviews>
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
Variants: `<trust-reviews variant="center">`.
|
|
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,9 +0,0 @@
|
|
|
1
|
-
.c-trust-reviews{border-block:1px solid var(--color-border)}
|
|
2
|
-
.c-trust-reviews__row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-4) var(--space-6)}
|
|
3
|
-
.c-trust-reviews__people{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-4)}
|
|
4
|
-
.c-trust-reviews__rating p{margin:0;display:flex;flex-wrap:wrap;align-items:center;gap:.4rem;font-size:var(--step-0);color:var(--color-muted)}
|
|
5
|
-
.c-trust-reviews__rating strong{font-weight:600;color:var(--color-text)}
|
|
6
|
-
.c-trust-reviews__platforms{justify-content:flex-start;gap:var(--space-5)}
|
|
7
|
-
.c-trust-reviews__platforms:empty{display:none}
|
|
8
|
-
.c-trust-reviews__platforms img{max-height:1.5rem}
|
|
9
|
-
.c-trust-reviews--center .c-trust-reviews__row,.c-trust-reviews--center .c-trust-reviews__people,.c-trust-reviews--center .c-trust-reviews__platforms{justify-content:center}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<section class="c-trust-reviews section--tight"><div class="wrap c-trust-reviews__row"><div class="c-trust-reviews__people"><div class="avatar-group"><slot name="avatars"></slot></div><div class="c-trust-reviews__rating"><slot name="rating"></slot></div></div><div class="logo-row c-trust-reviews__platforms"><slot name="platforms"></slot></div></div></section>
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
# case-alternating
|
|
2
|
-
|
|
3
|
-
Numbered case studies alternating photo and copy.
|
|
4
|
-
|
|
5
|
-
- **Category:** work
|
|
6
|
-
- **Media:** one photo per case
|
|
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 1–2 buttons / `.btn-arrow` links |
|
|
18
|
-
| `cases` | 2–4 `<article><div class="frame ratio-4x3"><img></div><div class="stack"><p class="eyebrow">…</p><h3>…</h3><p>…</p><a class="btn-outline">…</a></div></article>` |
|
|
19
|
-
|
|
20
|
-
## Example
|
|
21
|
-
|
|
22
|
-
```html
|
|
23
|
-
<case-alternating>
|
|
24
|
-
<p slot="eyebrow" class="eyebrow eyebrow--accent">Featured case studies</p>
|
|
25
|
-
<h2 slot="heading">Real cases. Real results for our clients.</h2>
|
|
26
|
-
<p slot="lede" class="lede">A look at recent work across our service areas. Some names are kept private to respect client confidentiality.</p>
|
|
27
|
-
<a slot="actions" class="btn-arrow" href="/case-studies">All case studies <svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg></a>
|
|
28
|
-
<article slot="cases"><div class="frame ratio-4x3"><img src="/media/harvest/case-1.jpg" alt="Wind turbines beside an office park" width="1200" height="900" loading="lazy"></div><div class="stack"><p class="eyebrow">Case 01 · 2026 · Energy</p><h3>Helped a large energy company defeat a price-fixing lawsuit.</h3><p>The court refused to group the customers into a class, and threw the case out for good.</p><a class="btn-outline" href="/case-studies/energy">Read the full case study <svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg></a></div></article>
|
|
29
|
-
<article slot="cases"><div class="frame ratio-4x3"><img src="/media/harvest/case-2.jpg" alt="Two lawyers reviewing documents on marble steps" width="1200" height="900" loading="lazy"></div><div class="stack"><p class="eyebrow">Case 02 · 2025 · Technology</p><h3>Defended a US tech company against a patent troll.</h3><p>No products were blocked, and we settled on terms that worked for our client.</p><a class="btn-outline" href="/case-studies/technology">Read the full case study <svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg></a></div></article>
|
|
30
|
-
<article slot="cases"><div class="frame ratio-4x3"><img src="/media/harvest/case-3.jpg" alt="Newsroom desks at night" width="1200" height="900" loading="lazy"></div><div class="stack"><p class="eyebrow">Case 03 · 2025 · Media</p><h3>Won a copyright trial for an independent publisher.</h3><p>A jury verdict in nine days, and a permanent injunction that protected the catalogue.</p><a class="btn-outline" href="/case-studies/media">Read the full case study <svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg></a></div></article>
|
|
31
|
-
</case-alternating>
|
|
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,86 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"schemaVersion": 1,
|
|
3
|
-
"id": "work/case-alternating",
|
|
4
|
-
"revision": 1,
|
|
5
|
-
"status": "draft",
|
|
6
|
-
"owner": "Vitris design library",
|
|
7
|
-
"sourceHash": "ce5e6e7e56b617a2400c71e9a61c9e3cb83560165f174edd2303c97cb616056e",
|
|
8
|
-
"fit": {
|
|
9
|
-
"visitorJobs": [
|
|
10
|
-
"Inspect project evidence and outcomes"
|
|
11
|
-
],
|
|
12
|
-
"pageRoles": [
|
|
13
|
-
"work index"
|
|
14
|
-
],
|
|
15
|
-
"useWhen": [
|
|
16
|
-
"Inspect project evidence and outcomes"
|
|
17
|
-
],
|
|
18
|
-
"avoidWhen": [
|
|
19
|
-
"The content or media cannot support this composition"
|
|
20
|
-
]
|
|
21
|
-
},
|
|
22
|
-
"content": {
|
|
23
|
-
"requiredSlots": [
|
|
24
|
-
"heading",
|
|
25
|
-
"cases"
|
|
26
|
-
],
|
|
27
|
-
"optionalSlots": [
|
|
28
|
-
"eyebrow",
|
|
29
|
-
"lede",
|
|
30
|
-
"actions"
|
|
31
|
-
],
|
|
32
|
-
"testedItemCounts": [
|
|
33
|
-
1
|
|
34
|
-
]
|
|
35
|
-
},
|
|
36
|
-
"media": {
|
|
37
|
-
"min": 1,
|
|
38
|
-
"max": 8,
|
|
39
|
-
"optionalBehavior": "Recompose without empty media frames when media is optional",
|
|
40
|
-
"aspect": [
|
|
41
|
-
"content-dependent"
|
|
42
|
-
]
|
|
43
|
-
},
|
|
44
|
-
"composition": {
|
|
45
|
-
"hierarchy": "alternating narratives",
|
|
46
|
-
"alignment": "alternating",
|
|
47
|
-
"density": "medium",
|
|
48
|
-
"mediaProminence": "high",
|
|
49
|
-
"geometry": [
|
|
50
|
-
"alternating",
|
|
51
|
-
"image-led"
|
|
52
|
-
],
|
|
53
|
-
"boundary": "section boundary adapts to adjacent content"
|
|
54
|
-
},
|
|
55
|
-
"adaptation": {
|
|
56
|
-
"flexible": [
|
|
57
|
-
"spacing",
|
|
58
|
-
"surface treatment",
|
|
59
|
-
"type scale"
|
|
60
|
-
],
|
|
61
|
-
"invariants": [
|
|
62
|
-
"semantic reading order",
|
|
63
|
-
"one clear section purpose"
|
|
64
|
-
],
|
|
65
|
-
"customWhen": [
|
|
66
|
-
"The visitor job needs a different hierarchy"
|
|
67
|
-
]
|
|
68
|
-
},
|
|
69
|
-
"responsive": {
|
|
70
|
-
"readingOrder": "DOM order follows the visitor narrative",
|
|
71
|
-
"reflow": "Stack or resize according to content",
|
|
72
|
-
"crop": "Keep important subjects visible"
|
|
73
|
-
},
|
|
74
|
-
"interaction": {
|
|
75
|
-
"behavior": "Native links and controls",
|
|
76
|
-
"islands": []
|
|
77
|
-
},
|
|
78
|
-
"evidence": {
|
|
79
|
-
"provenance": [
|
|
80
|
-
"Original Vitris block source"
|
|
81
|
-
],
|
|
82
|
-
"testedContexts": [],
|
|
83
|
-
"accessibility": [],
|
|
84
|
-
"previewManifest": "../../../design-system/block-previews/v1/work--case-alternating.json"
|
|
85
|
-
}
|
|
86
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
.c-case-alternating__list{display:grid;gap:var(--space-7)}
|
|
2
|
-
.c-case-alternating__list > article{display:grid;gap:var(--space-5);align-items:center;padding-top:var(--space-7);border-top:1px solid var(--color-border)}
|
|
3
|
-
.c-case-alternating__list .stack{gap:var(--space-4);justify-items:start}
|
|
4
|
-
.c-case-alternating__list .stack h3{font-size:var(--step-3);max-width:20ch}
|
|
5
|
-
.c-case-alternating__list .stack > p:not(.eyebrow){color:var(--color-muted);max-width:36rem}
|
|
6
|
-
.c-case-alternating__list .stack .eyebrow{display:flex;gap:var(--space-3)}
|
|
7
|
-
@media(min-width:900px){.c-case-alternating__list{gap:var(--space-8)}.c-case-alternating__list > article{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-8)}.c-case-alternating__list > article:nth-child(even) > .frame{order:2}}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<section class="c-case-alternating 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="c-case-alternating__list"><slot name="cases"></slot></div></div></section>
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
# case-carousel
|
|
2
|
-
|
|
3
|
-
One case per slide: copy left, image right, arrow nav.
|
|
4
|
-
|
|
5
|
-
- **Category:** work
|
|
6
|
-
- **Media:** one photo per case
|
|
7
|
-
- **Registers:** b2b, professional, beauty
|
|
8
|
-
- **Variants:** (none)
|
|
9
|
-
|
|
10
|
-
## Slots
|
|
11
|
-
|
|
12
|
-
| Slot | Content |
|
|
13
|
-
|------|---------|
|
|
14
|
-
| `slides` | 3–5 `<article><div class="stack"><p class="eyebrow">…</p><h2>…</h2><p>…</p><a class="btn-arrow">…</a></div><div class="frame ratio-4x3"><img></div></article>` |
|
|
15
|
-
|
|
16
|
-
## Example
|
|
17
|
-
|
|
18
|
-
```html
|
|
19
|
-
<case-carousel>
|
|
20
|
-
<article slot="slides"><div class="stack"><p class="eyebrow eyebrow--accent">Nextdock · Identity</p><h2>From idea to launch: how we gave Nextdock a bold identity.</h2><p>We worked with Nextdock from their earliest sketches, creating a logo that reflects speed and innovation. The new identity helped them secure their first round of investment.</p><a class="btn-arrow" href="/work/nextdock">See the project <svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg></a></div><div class="frame ratio-4x3"><img src="/media/harvest/work-1.jpg" alt="Nextdock wordmark on a dark billboard" width="1200" height="900" loading="lazy"></div></article>
|
|
21
|
-
<article slot="slides"><div class="stack"><p class="eyebrow eyebrow--accent">Neobase · Rebrand</p><h2>Rebranding success: a legacy brand for modern markets.</h2><p>A complete visual overhaul that kept the brand's heritage while appealing to a new generation of buyers.</p><a class="btn-arrow" href="/work/neobase">See the project <svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg></a></div><div class="frame ratio-4x3"><img src="/media/harvest/work-2.jpg" alt="Neobase mark applied to a car wrap" width="1200" height="900" loading="lazy"></div></article>
|
|
22
|
-
<article slot="slides"><div class="stack"><p class="eyebrow eyebrow--accent">Charter · Identity</p><h2>From concept to market: a timeless brand identity.</h2><p>Working with a mission-driven company from their earliest stages, we created a mark that reflects their values of sustainability and craft.</p><a class="btn-arrow" href="/work/charter">See the project <svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg></a></div><div class="frame ratio-4x3"><img src="/media/harvest/work-3.jpg" alt="Charter logo embossed on packaging" width="1200" height="900" loading="lazy"></div></article>
|
|
23
|
-
</case-carousel>
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
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,7 +0,0 @@
|
|
|
1
|
-
.c-case-carousel__carousel .carousel__track{gap:var(--space-6);scroll-padding-inline:0}
|
|
2
|
-
.c-case-carousel__carousel .carousel__track > *{flex:0 0 100%;display:grid;gap:var(--space-5);align-items:center}
|
|
3
|
-
.c-case-carousel__carousel .stack{gap:var(--space-4);justify-items:start}
|
|
4
|
-
.c-case-carousel__carousel .stack h2{max-width:18ch}
|
|
5
|
-
.c-case-carousel__carousel .stack > p:not(.eyebrow){color:var(--color-muted);max-width:34rem}
|
|
6
|
-
.c-case-carousel__carousel .frame{box-shadow:none}
|
|
7
|
-
@media(min-width:900px){.c-case-carousel__carousel .carousel__track > *{grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:var(--space-8)}}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<section class="c-case-carousel section"><div class="wrap carousel c-case-carousel__carousel" data-island="carousel" tabindex="0" aria-roledescription="carousel"><div class="carousel__track"><slot name="slides"></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></section>
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
# case-header
|
|
2
|
-
|
|
3
|
-
Case study / project header: breadcrumb, title, meta, hero image, side CTA card.
|
|
4
|
-
|
|
5
|
-
- **Category:** work
|
|
6
|
-
- **Media:** one hero photo
|
|
7
|
-
- **Registers:** professional, b2b, trade
|
|
8
|
-
- **Variants:** (none)
|
|
9
|
-
|
|
10
|
-
## Slots
|
|
11
|
-
|
|
12
|
-
| Slot | Content |
|
|
13
|
-
|------|---------|
|
|
14
|
-
| `breadcrumb` | Optional `<a>` trail ending in `<span aria-current="page">` |
|
|
15
|
-
| `(default)` | `<h1>` |
|
|
16
|
-
| `meta` | 2–4 `<span>` facts (date, category, client) |
|
|
17
|
-
| `media` | `<img>` 16:9 (LCP) |
|
|
18
|
-
| `aside` | Optional `<h3>` + `<p>` + `.btn` for the side card |
|
|
19
|
-
|
|
20
|
-
## Example
|
|
21
|
-
|
|
22
|
-
```html
|
|
23
|
-
<case-header>
|
|
24
|
-
<a slot="breadcrumb" href="/">Home</a>
|
|
25
|
-
<a slot="breadcrumb" href="/case-studies">Case studies</a>
|
|
26
|
-
<span slot="breadcrumb" aria-current="page">Energy antitrust</span>
|
|
27
|
-
<h1>An energy company beats a price-fixing lawsuit.</h1>
|
|
28
|
-
<span slot="meta">Nov 18, 2025</span>
|
|
29
|
-
<span slot="meta">Class action defense</span>
|
|
30
|
-
<span slot="meta">Lead partner: Dana Kowalski</span>
|
|
31
|
-
<img src="/media/harvest/case-1.jpg" alt="Two lawyers reviewing a tablet beside wind turbines" width="1600" height="900" slot="media" fetchpriority="high">
|
|
32
|
-
<h3 slot="aside">Need counsel on a matter like this?</h3>
|
|
33
|
-
<p slot="aside">A senior partner takes the first call. Conflicts cleared within the hour, a strategy memo on your desk inside seventy-two.</p>
|
|
34
|
-
<a slot="aside" class="btn" href="/contact">Get in touch <svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg></a>
|
|
35
|
-
</case-header>
|
|
36
|
-
```
|
|
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,18 +0,0 @@
|
|
|
1
|
-
.c-case-header{padding-block:calc(var(--section-y) - var(--space-4)) var(--section-y)}
|
|
2
|
-
.c-case-header__crumbs{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);margin-bottom:var(--space-6);font-size:var(--step-0);color:var(--color-muted)}
|
|
3
|
-
.c-case-header__crumbs:empty{display:none}
|
|
4
|
-
.c-case-header__crumbs > * + *::before{content:"/";margin-right:var(--space-2);color:var(--color-border)}
|
|
5
|
-
.c-case-header__crumbs a{color:inherit;text-decoration:none}
|
|
6
|
-
.c-case-header__crumbs [aria-current]{color:var(--color-text)}
|
|
7
|
-
.c-case-header__title{display:grid;gap:var(--space-4);max-width:52rem;margin-bottom:var(--space-7)}
|
|
8
|
-
.c-case-header h1{font-size:var(--step-4);max-width:24ch}
|
|
9
|
-
.c-case-header__meta{display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-4);font-size:var(--step-0);color:var(--color-muted)}
|
|
10
|
-
.c-case-header__meta > * + *::before{content:"·";margin-right:var(--space-4);color:var(--color-border)}
|
|
11
|
-
.c-case-header__grid{display:grid;gap:var(--space-4)}
|
|
12
|
-
.c-case-header__media{box-shadow:none}
|
|
13
|
-
.c-case-header__aside{display:grid;gap:var(--space-3);align-content:start;padding:var(--space-6)}
|
|
14
|
-
.c-case-header__aside:empty{display:none}
|
|
15
|
-
.c-case-header__aside h3{font-size:var(--step-2)}
|
|
16
|
-
.c-case-header__aside p{margin:0;color:var(--color-muted)}
|
|
17
|
-
.c-case-header__aside .btn,.c-case-header__aside .btn-outline{justify-self:start}
|
|
18
|
-
@media(min-width:900px){.c-case-header__grid{grid-template-columns:minmax(0,2fr) minmax(0,1fr);gap:var(--space-5)}.c-case-header__grid:has(.c-case-header__aside:empty){grid-template-columns:1fr}}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<section class="c-case-header section"><div class="wrap"><nav class="c-case-header__crumbs" aria-label="Breadcrumb"><slot name="breadcrumb"></slot></nav><div class="c-case-header__title"><slot></slot><div class="c-case-header__meta"><slot name="meta"></slot></div></div><div class="c-case-header__grid"><div class="frame ratio-16x9 c-case-header__media"><slot name="media"></slot></div><aside class="card card--flat c-case-header__aside"><slot name="aside"></slot></aside></div></div></section>
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
# project-evidence
|
|
2
|
-
|
|
3
|
-
A project story led by one real image and a compact fact ledger. Captions explain what the image actually shows; facts remain independently verifiable. This example is for the fictional Tide & Slate roofing company and uses a synthetic teaching image, never customer proof.
|
|
4
|
-
|
|
5
|
-
- **Category:** work
|
|
6
|
-
- **Media:** one project photo required
|
|
7
|
-
- **Registers:** trade, professional, b2b
|
|
8
|
-
- **Variants:** (none)
|
|
9
|
-
|
|
10
|
-
## Slots
|
|
11
|
-
|
|
12
|
-
| Slot | Content |
|
|
13
|
-
|------|---------|
|
|
14
|
-
| `eyebrow` | Optional project context |
|
|
15
|
-
| `heading` | `<h2>` with the project question or result |
|
|
16
|
-
| `summary` | Brief project narrative without unsupported claims |
|
|
17
|
-
| `media` | One image with truthful alt text and explicit dimensions |
|
|
18
|
-
| `caption` | Visible description and provenance context for the image |
|
|
19
|
-
| `facts` | Two to four `<div>` items containing `<dt>` and `<dd>` factual pairs |
|
|
20
|
-
|
|
21
|
-
## Example
|
|
22
|
-
|
|
23
|
-
```html
|
|
24
|
-
<project-evidence>
|
|
25
|
-
<p slot="eyebrow" class="eyebrow eyebrow--accent">Tide & Slate · fictional teaching example</p>
|
|
26
|
-
<h2 slot="heading">A roof shaped by the coast.</h2>
|
|
27
|
-
<p slot="summary" class="lede">The example shows how a project story can connect material choice, site conditions, and a clear next step without inventing a testimonial.</p>
|
|
28
|
-
<img slot="media" src="/media/teaching/slate-roof-finished.webp" alt="Synthetic teaching image of a slate roof on a coastal house" width="1536" height="1024" loading="lazy">
|
|
29
|
-
<span slot="caption">Synthetic teaching image. Replace with a verified project photograph and accurate caption.</span>
|
|
30
|
-
<div slot="facts"><dt>Material</dt><dd>Slate tiles</dd></div>
|
|
31
|
-
<div slot="facts"><dt>Setting</dt><dd>Coastal residence</dd></div>
|
|
32
|
-
</project-evidence>
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
The media is essential to this composition. Do not use it when no genuine project image exists. On a real site, source the facts and caption from the project record.
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"schemaVersion": 1,
|
|
3
|
-
"id": "work/project-evidence",
|
|
4
|
-
"revision": 1,
|
|
5
|
-
"status": "draft",
|
|
6
|
-
"owner": "Vitris design library",
|
|
7
|
-
"sourceHash": "1a4977448d8eff5dfdb483b44ae62737cc4a74d387db07f430e227d8169f9593",
|
|
8
|
-
"fit": {
|
|
9
|
-
"visitorJobs": [
|
|
10
|
-
"Inspect a real project and its verified facts"
|
|
11
|
-
],
|
|
12
|
-
"pageRoles": [
|
|
13
|
-
"project story"
|
|
14
|
-
],
|
|
15
|
-
"useWhen": [
|
|
16
|
-
"Inspect a real project and its verified facts"
|
|
17
|
-
],
|
|
18
|
-
"avoidWhen": [
|
|
19
|
-
"The content or media cannot support this composition"
|
|
20
|
-
]
|
|
21
|
-
},
|
|
22
|
-
"content": {
|
|
23
|
-
"requiredSlots": [
|
|
24
|
-
"heading",
|
|
25
|
-
"summary",
|
|
26
|
-
"media",
|
|
27
|
-
"caption",
|
|
28
|
-
"facts"
|
|
29
|
-
],
|
|
30
|
-
"optionalSlots": [
|
|
31
|
-
"eyebrow"
|
|
32
|
-
],
|
|
33
|
-
"testedItemCounts": [
|
|
34
|
-
1
|
|
35
|
-
]
|
|
36
|
-
},
|
|
37
|
-
"media": {
|
|
38
|
-
"min": 1,
|
|
39
|
-
"max": 8,
|
|
40
|
-
"optionalBehavior": "Recompose without empty media frames when media is optional",
|
|
41
|
-
"aspect": [
|
|
42
|
-
"content-dependent"
|
|
43
|
-
]
|
|
44
|
-
},
|
|
45
|
-
"composition": {
|
|
46
|
-
"hierarchy": "image with fact ledger",
|
|
47
|
-
"alignment": "asymmetric",
|
|
48
|
-
"density": "medium",
|
|
49
|
-
"mediaProminence": "high",
|
|
50
|
-
"geometry": [
|
|
51
|
-
"image-led",
|
|
52
|
-
"facts"
|
|
53
|
-
],
|
|
54
|
-
"boundary": "section boundary adapts to adjacent content"
|
|
55
|
-
},
|
|
56
|
-
"adaptation": {
|
|
57
|
-
"flexible": [
|
|
58
|
-
"spacing",
|
|
59
|
-
"surface treatment",
|
|
60
|
-
"type scale"
|
|
61
|
-
],
|
|
62
|
-
"invariants": [
|
|
63
|
-
"semantic reading order",
|
|
64
|
-
"one clear section purpose"
|
|
65
|
-
],
|
|
66
|
-
"customWhen": [
|
|
67
|
-
"The visitor job needs a different hierarchy"
|
|
68
|
-
]
|
|
69
|
-
},
|
|
70
|
-
"responsive": {
|
|
71
|
-
"readingOrder": "DOM order follows the visitor narrative",
|
|
72
|
-
"reflow": "Stack or resize according to content",
|
|
73
|
-
"crop": "Keep important subjects visible"
|
|
74
|
-
},
|
|
75
|
-
"interaction": {
|
|
76
|
-
"behavior": "Native links and controls",
|
|
77
|
-
"islands": []
|
|
78
|
-
},
|
|
79
|
-
"evidence": {
|
|
80
|
-
"provenance": [
|
|
81
|
-
"Original Vitris block source"
|
|
82
|
-
],
|
|
83
|
-
"testedContexts": [],
|
|
84
|
-
"accessibility": [],
|
|
85
|
-
"previewManifest": "../../../design-system/block-previews/v1/work--project-evidence.json"
|
|
86
|
-
}
|
|
87
|
-
}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
.c-project-evidence__intro{display:grid;gap:var(--space-4);margin-bottom:var(--space-6)}
|
|
2
|
-
.c-project-evidence__intro h2{max-width:18ch}
|
|
3
|
-
.c-project-evidence__intro > p{max-width:56ch;color:var(--color-muted)}
|
|
4
|
-
.c-project-evidence__body{display:grid;gap:var(--space-5)}
|
|
5
|
-
.c-project-evidence__figure{margin:0;min-width:0}
|
|
6
|
-
.c-project-evidence__figure img{display:block;width:100%;height:auto;aspect-ratio:4/3;object-fit:cover}
|
|
7
|
-
.c-project-evidence__figure figcaption{font-size:var(--step-0);color:var(--color-muted);margin-top:var(--space-2);max-width:65ch}
|
|
8
|
-
.c-project-evidence__facts{align-self:start;display:grid;border-top:2px solid var(--color-accent);margin:0}
|
|
9
|
-
.c-project-evidence__facts > div{padding:var(--space-4) 0;border-bottom:1px solid var(--color-border);display:grid;gap:var(--space-2)}
|
|
10
|
-
.c-project-evidence__facts dt{font-size:var(--step-0);color:var(--color-muted)}
|
|
11
|
-
.c-project-evidence__facts dd{margin:0;font-weight:600}
|
|
12
|
-
@media(min-width:900px){.c-project-evidence__intro{grid-template-columns:minmax(0,1fr) minmax(18rem,.75fr);align-items:end}.c-project-evidence__body{grid-template-columns:minmax(0,1.5fr) minmax(16rem,.55fr);gap:var(--space-7)}}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<section class="c-project-evidence section"><div class="wrap"><div class="c-project-evidence__intro"><div><slot name="eyebrow"></slot><slot name="heading"></slot></div><slot name="summary"></slot></div><div class="c-project-evidence__body"><figure class="c-project-evidence__figure"><slot name="media"></slot><figcaption><slot name="caption"></slot></figcaption></figure><dl class="c-project-evidence__facts"><slot name="facts"></slot></dl></div></div></section>
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
# project-grid
|
|
2
|
-
|
|
3
|
-
Portfolio grid: image, title, category.
|
|
4
|
-
|
|
5
|
-
- **Category:** work
|
|
6
|
-
- **Media:** one photo per project
|
|
7
|
-
- **Registers:** b2b, beauty, trade, professional
|
|
8
|
-
- **Variants:** two
|
|
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
|
-
| `projects` | 3–9 `<a href><div class="frame ratio-4x3"><img></div><h3>Title</h3><p>Category · Year</p></a>` |
|
|
19
|
-
|
|
20
|
-
## Example
|
|
21
|
-
|
|
22
|
-
```html
|
|
23
|
-
<project-grid>
|
|
24
|
-
<p slot="eyebrow" class="eyebrow eyebrow--accent">Featured work</p>
|
|
25
|
-
<h2 slot="heading">Marks that stuck.</h2>
|
|
26
|
-
<a slot="actions" class="btn-arrow" href="/work">All projects <svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg></a>
|
|
27
|
-
<a slot="projects" href="/work/neobase"><div class="frame ratio-4x3"><img src="/media/harvest/work-2.jpg" alt="Neobase identity" width="1200" height="900" loading="lazy"></div><h3>Neobase</h3><p>Rebrand · 2026</p></a>
|
|
28
|
-
<a slot="projects" href="/work/nextdock"><div class="frame ratio-4x3"><img src="/media/harvest/work-1.jpg" alt="Nextdock identity" width="1200" height="900" loading="lazy"></div><h3>Nextdock</h3><p>Logo & identity · 2026</p></a>
|
|
29
|
-
<a slot="projects" href="/work/scalar"><div class="frame ratio-4x3"><img src="/media/harvest/work-3.jpg" alt="Scalar identity" width="1200" height="900" loading="lazy"></div><h3>Scalar</h3><p>Icon system · 2025</p></a>
|
|
30
|
-
<a slot="projects" href="/work/charter"><div class="frame ratio-4x3"><img src="/media/harvest/work-4.jpg" alt="Charter identity" width="1200" height="900" loading="lazy"></div><h3>Charter</h3><p>Brand identity · 2025</p></a>
|
|
31
|
-
<a slot="projects" href="/work/echo"><div class="frame ratio-4x3"><img src="/media/harvest/work-5.jpg" alt="Echo identity" width="1200" height="900" loading="lazy"></div><h3>Echo</h3><p>Rebrand · 2025</p></a>
|
|
32
|
-
<a slot="projects" href="/work/harbor"><div class="frame ratio-4x3"><img src="/media/harvest/work-6.jpg" alt="Harbor identity" width="1200" height="900" loading="lazy"></div><h3>Harbor Roofing</h3><p>Logo & fleet · 2024</p></a>
|
|
33
|
-
</project-grid>
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
Variants: `<project-grid variant="two">`.
|
|
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,9 +0,0 @@
|
|
|
1
|
-
.c-project-grid__grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-6) var(--space-4)}
|
|
2
|
-
.c-project-grid__grid > a{display:grid;gap:var(--space-3);align-content:start;color:inherit;text-decoration:none}
|
|
3
|
-
.c-project-grid__grid > a .frame{box-shadow:none}
|
|
4
|
-
.c-project-grid__grid > a img{transition:transform .5s ease}
|
|
5
|
-
.c-project-grid__grid > a:hover img{transform:scale(1.03)}
|
|
6
|
-
.c-project-grid__grid h3{font-size:var(--step-1)}
|
|
7
|
-
.c-project-grid__grid p{margin:calc(-1 * var(--space-2)) 0 0;font-size:var(--step-0);color:var(--color-muted)}
|
|
8
|
-
@media(min-width:720px){.c-project-grid__grid{gap:var(--space-7) var(--space-5)}}
|
|
9
|
-
@media(min-width:1080px){.c-project-grid__grid{grid-template-columns:repeat(3,minmax(0,1fr))}.c-project-grid--two .c-project-grid__grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-8) var(--space-6)}}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<section class="c-project-grid 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="c-project-grid__grid"><slot name="projects"></slot></div></div></section>
|