@tryvitris/website-harness 0.0.0-stage → 0.1.0-beta.5
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/CONTRIBUTING.md +7 -0
- package/LICENSE +21 -0
- package/NOTICE +17 -0
- package/README.md +139 -2
- package/agent/EVALUATION.md +23 -0
- package/agent/PROMPT.md +13 -0
- package/agent/STATE.json +109 -0
- package/agent/WORKFLOW.md +108 -0
- package/agent/evals/preview.md +5 -0
- package/agent/graph.yaml +752 -0
- package/agent/guardrails.md +10 -0
- package/agent/refs/accessibility.md +9 -0
- package/agent/refs/art-direction.md +15 -0
- package/agent/refs/brand.md +3 -0
- package/agent/refs/browser.md +15 -0
- package/agent/refs/business.md +9 -0
- package/agent/refs/components.md +42 -0
- package/agent/refs/compose.md +10 -0
- package/agent/refs/contracts.md +32 -0
- package/agent/refs/copy.md +14 -0
- package/agent/refs/counterpoint.md +3 -0
- package/agent/refs/critic.md +29 -0
- package/agent/refs/design-calibration.md +31 -0
- package/agent/refs/design-feedback.md +13 -0
- package/agent/refs/design-quality.md +33 -0
- package/agent/refs/design-synthesis.md +9 -0
- package/agent/refs/direction.md +29 -0
- package/agent/refs/feedback-fulfillment.md +7 -0
- package/agent/refs/geo.md +7 -0
- package/agent/refs/harvest.md +7 -0
- package/agent/refs/icons.md +102 -0
- package/agent/refs/images.md +3 -0
- package/agent/refs/implement.md +24 -0
- package/agent/refs/industry-reference-shortlist.md +64 -0
- package/agent/refs/inspiration.md +17 -0
- package/agent/refs/interpret.md +3 -0
- package/agent/refs/jev.md +166 -0
- package/agent/refs/launch.md +11 -0
- package/agent/refs/layout.md +7 -0
- package/agent/refs/media.md +35 -0
- package/agent/refs/motif.md +3 -0
- package/agent/refs/motion-count.md +13 -0
- package/agent/refs/motion-image.md +12 -0
- package/agent/refs/motion-numeric.md +14 -0
- package/agent/refs/motion-page.md +23 -0
- package/agent/refs/motion-process.md +12 -0
- package/agent/refs/motion-sequence.md +7 -0
- package/agent/refs/motion-text.md +12 -0
- package/agent/refs/motion.md +11 -0
- package/agent/refs/narrative.md +9 -0
- package/agent/refs/performance.md +36 -0
- package/agent/refs/preview.md +3 -0
- package/agent/refs/production-quality.md +33 -0
- package/agent/refs/psychology.md +3 -0
- package/agent/refs/refine.md +14 -0
- package/agent/refs/research.md +7 -0
- package/agent/refs/sections.md +6 -0
- package/agent/refs/seo.md +9 -0
- package/agent/refs/storyboard.md +27 -0
- package/agent/refs/template-adaptation.md +42 -0
- package/agent/refs/template-from-url.md +91 -0
- package/agent/refs/template-library.md +32 -0
- package/agent/refs/template-motion.md +44 -0
- package/agent/refs/theme-selection.md +13 -0
- package/agent/refs/ui-ux.md +7 -0
- package/agent/refs/usability.md +5 -0
- package/agent/refs/variant-directions.md +20 -0
- package/agent/refs/write.md +6 -0
- package/agent/request.json +11 -0
- package/agent/workflow.json +4 -0
- package/bin/api/agent/artifacts.js +38 -0
- package/bin/api/agent/evaluate.js +55 -0
- package/bin/api/agent/grade.js +51 -0
- package/bin/api/agent/graph.js +16 -0
- package/bin/api/cli/api.js +104 -0
- package/bin/api/cli.js +48 -0
- package/bin/api/contracts.js +22 -0
- package/bin/api/engine.js +53 -0
- package/bin/api/hosting.js +40 -0
- package/bin/api/icons.js +57 -0
- package/bin/api/index.js +20 -0
- package/bin/api/references.js +45 -0
- package/bin/api/render.js +61 -0
- package/bin/api/schema.js +68 -0
- package/bin/api/theme.js +9 -0
- package/bin/api/types.js +8 -0
- package/bin/chunks/chunk-2NW7KSPA.js +17 -0
- package/bin/chunks/chunk-34H54KEY.js +45 -0
- package/bin/chunks/chunk-3CTBXY5K.js +22313 -0
- package/bin/chunks/chunk-42IXFXUD.js +1141 -0
- package/bin/chunks/chunk-4DM5TTLG.js +219 -0
- package/bin/chunks/chunk-4GZCAWWK.js +327 -0
- package/bin/chunks/chunk-54JC5L35.js +493 -0
- package/bin/chunks/chunk-5OOPJNGN.js +511 -0
- package/bin/chunks/chunk-6A3VWYMF.js +28 -0
- package/bin/chunks/chunk-6H3T46F5.js +25 -0
- package/bin/chunks/chunk-7FS67SRF.js +12 -0
- package/bin/chunks/chunk-7VLBEAFW.js +56 -0
- package/bin/chunks/chunk-ANMJRJQ5.js +31 -0
- package/bin/chunks/chunk-AUO5I56E.js +118774 -0
- package/bin/chunks/chunk-B5I45LFD.js +619 -0
- package/bin/chunks/chunk-BBV7PMFC.js +185 -0
- package/bin/chunks/chunk-BIEDSEL2.js +8 -0
- package/bin/chunks/chunk-CBEJZO4L.js +67 -0
- package/bin/chunks/chunk-DRJQ4OOU.js +514 -0
- package/bin/chunks/chunk-DSS2U2OM.js +115 -0
- package/bin/chunks/chunk-E5Y46VBX.js +678 -0
- package/bin/chunks/chunk-FOXUQXTV.js +278 -0
- package/bin/chunks/chunk-FYN4T4SV.js +4900 -0
- package/bin/chunks/chunk-G7MNMULR.js +192 -0
- package/bin/chunks/chunk-GVNIL34R.js +78 -0
- package/bin/chunks/chunk-GZDLXYZV.js +3425 -0
- package/bin/chunks/chunk-HNORQ74T.js +40 -0
- package/bin/chunks/chunk-IKNMBGGD.js +217 -0
- package/bin/chunks/chunk-JCRGE6AL.js +14 -0
- package/bin/chunks/chunk-LKN75JGA.js +63 -0
- package/bin/chunks/chunk-M2ETYSVJ.js +176 -0
- package/bin/chunks/chunk-M4LNHYYR.js +177 -0
- package/bin/chunks/chunk-PRLL7B63.js +113 -0
- package/bin/chunks/chunk-R7YELY3C.js +923 -0
- package/bin/chunks/chunk-T6PE4KN4.js +277 -0
- package/bin/chunks/chunk-T7DGRVTP.js +458 -0
- package/bin/chunks/chunk-TY33XMHW.js +239 -0
- package/bin/chunks/chunk-VH7PM7KJ.js +179 -0
- package/bin/chunks/chunk-WEFDVXFX.js +65 -0
- package/bin/chunks/chunk-XGTHGWPW.js +90 -0
- package/bin/chunks/chunk-XL2DRAYI.js +39 -0
- package/bin/chunks/chunk-YCVGD2CG.js +2751 -0
- package/bin/chunks/chunk-YQYHROLZ.js +1023 -0
- package/bin/chunks/chunk-YYPYYOEV.js +34 -0
- package/bin/chunks/chunk-Z2UNY47A.js +2418 -0
- package/bin/chunks/design-context-store-IAT2P2OC.js +39 -0
- package/bin/chunks/packets-VBMY4SQJ.js +53 -0
- package/bin/chunks/policy-2I37JUU3.js +18 -0
- package/bin/chunks/preparation-S4MG3RPL.js +93 -0
- package/bin/chunks/questions-HKELBDFL.js +120 -0
- package/bin/chunks/state-GDL6CCJI.js +20 -0
- package/bin/chunks/template-gallery-ET76ERZQ.js +140 -0
- package/bin/cloudflare/backend.js +24421 -0
- package/bin/cloudflare/blake3.wasm +0 -0
- package/bin/cloudflare/forms-test.js +429 -0
- package/bin/cloudflare/templates.js +100 -0
- package/bin/types/scripts/lib/r2.d.ts +7 -0
- package/bin/types/scripts/onboard/browser.d.ts +9 -0
- package/bin/types/scripts/onboard/crawl.d.ts +35 -0
- package/bin/types/scripts/onboard/images.d.ts +19 -0
- package/bin/types/scripts/onboard/prompt.d.ts +10 -0
- package/bin/types/scripts/onboard/run.d.ts +47 -0
- package/bin/types/src/agent/adaptation-checkpoint.d.ts +70 -0
- package/bin/types/src/agent/added-media.d.ts +31 -0
- package/bin/types/src/agent/api-contracts.d.ts +2 -0
- package/bin/types/src/agent/art-direction-policy.d.ts +9 -0
- package/bin/types/src/agent/art-direction.d.ts +253 -0
- package/bin/types/src/agent/artifacts.d.ts +602 -0
- package/bin/types/src/agent/browser-motion-journey.d.ts +59 -0
- package/bin/types/src/agent/browser-motion.d.ts +40 -0
- package/bin/types/src/agent/browser-timeout.d.ts +4 -0
- package/bin/types/src/agent/composition-authoring.d.ts +12 -0
- package/bin/types/src/agent/composition-context.d.ts +63 -0
- package/bin/types/src/agent/composition-contract.d.ts +4 -0
- package/bin/types/src/agent/composition-decisions.d.ts +43 -0
- package/bin/types/src/agent/composition-preflight.d.ts +16 -0
- package/bin/types/src/agent/creative-change-context.d.ts +21 -0
- package/bin/types/src/agent/creative-context.d.ts +56 -0
- package/bin/types/src/agent/creative-contract.d.ts +123 -0
- package/bin/types/src/agent/creative-efficiency.d.ts +18 -0
- package/bin/types/src/agent/creative-evidence.d.ts +57 -0
- package/bin/types/src/agent/creative-objective.d.ts +33 -0
- package/bin/types/src/agent/creative-profile.d.ts +81 -0
- package/bin/types/src/agent/creative-prompts.d.ts +7 -0
- package/bin/types/src/agent/creative-render-bindings.d.ts +13 -0
- package/bin/types/src/agent/creative-revision.d.ts +33 -0
- package/bin/types/src/agent/creative-skills.d.ts +25 -0
- package/bin/types/src/agent/cursor-hook.d.ts +182 -0
- package/bin/types/src/agent/design-bundle.d.ts +24 -0
- package/bin/types/src/agent/design-calibration.d.ts +43 -0
- package/bin/types/src/agent/design-cli.d.ts +5 -0
- package/bin/types/src/agent/design-comparison.d.ts +63 -0
- package/bin/types/src/agent/design-context-packet.d.ts +82 -0
- package/bin/types/src/agent/design-context-store.d.ts +14 -0
- package/bin/types/src/agent/design-context.d.ts +85 -0
- package/bin/types/src/agent/design-contracts.d.ts +35 -0
- package/bin/types/src/agent/design-copy.d.ts +29 -0
- package/bin/types/src/agent/design-feedback.d.ts +91 -0
- package/bin/types/src/agent/design-knowledge.d.ts +124 -0
- package/bin/types/src/agent/design-quality.d.ts +143 -0
- package/bin/types/src/agent/design-review-server.d.ts +13 -0
- package/bin/types/src/agent/design-run.d.ts +174 -0
- package/bin/types/src/agent/design-synthesis.d.ts +76 -0
- package/bin/types/src/agent/design-usage.d.ts +38 -0
- package/bin/types/src/agent/editorial.d.ts +11 -0
- package/bin/types/src/agent/evaluate.d.ts +28 -0
- package/bin/types/src/agent/grade.d.ts +16 -0
- package/bin/types/src/agent/graph.d.ts +82 -0
- package/bin/types/src/agent/industry/document.d.ts +10 -0
- package/bin/types/src/agent/industry/interactions.d.ts +2 -0
- package/bin/types/src/agent/industry/markup.d.ts +14 -0
- package/bin/types/src/agent/industry/registry.d.ts +2 -0
- package/bin/types/src/agent/industry/render-style.d.ts +3 -0
- package/bin/types/src/agent/industry/ridgeline/browse.d.ts +2 -0
- package/bin/types/src/agent/industry/ridgeline/diagrams.d.ts +9 -0
- package/bin/types/src/agent/industry/ridgeline/facts.d.ts +61 -0
- package/bin/types/src/agent/industry/ridgeline/pages/company.d.ts +5 -0
- package/bin/types/src/agent/industry/ridgeline/pages/home.d.ts +1 -0
- package/bin/types/src/agent/industry/ridgeline/pages/journal.d.ts +24 -0
- package/bin/types/src/agent/industry/ridgeline/pages/services.d.ts +6 -0
- package/bin/types/src/agent/industry/ridgeline/photo.d.ts +18 -0
- package/bin/types/src/agent/industry/ridgeline/script.d.ts +1 -0
- package/bin/types/src/agent/industry/ridgeline/site.d.ts +2 -0
- package/bin/types/src/agent/industry/ridgeline/style.d.ts +1 -0
- package/bin/types/src/agent/industry/ridgeline/theme.d.ts +4 -0
- package/bin/types/src/agent/industry/seven/barber-club.d.ts +2 -0
- package/bin/types/src/agent/industry/seven/barber-corner.d.ts +2 -0
- package/bin/types/src/agent/industry/seven/barber-form.d.ts +2 -0
- package/bin/types/src/agent/industry/seven/browse.d.ts +4 -0
- package/bin/types/src/agent/industry/seven/construction-built.d.ts +2 -0
- package/bin/types/src/agent/industry/seven/construction-craft.d.ts +2 -0
- package/bin/types/src/agent/industry/seven/construction-siteworks.d.ts +3 -0
- package/bin/types/src/agent/industry/seven/electrical-circuit.d.ts +2 -0
- package/bin/types/src/agent/industry/seven/electrical-light.d.ts +3 -0
- package/bin/types/src/agent/industry/seven/electrical-power.d.ts +3 -0
- package/bin/types/src/agent/industry/seven/hvac-climate.d.ts +3 -0
- package/bin/types/src/agent/industry/seven/hvac-dispatch.d.ts +2 -0
- package/bin/types/src/agent/industry/seven/hvac-seasonal.d.ts +2 -0
- package/bin/types/src/agent/industry/seven/interactions.d.ts +2 -0
- package/bin/types/src/agent/industry/seven/landscape-atlas.d.ts +4 -0
- package/bin/types/src/agent/industry/seven/landscape-courtyard.d.ts +3 -0
- package/bin/types/src/agent/industry/seven/landscape-seasons.d.ts +3 -0
- package/bin/types/src/agent/industry/seven/legal-casework.d.ts +2 -0
- package/bin/types/src/agent/industry/seven/legal-counsel.d.ts +2 -0
- package/bin/types/src/agent/industry/seven/legal-table.d.ts +2 -0
- package/bin/types/src/agent/industry/seven/medical-continuum.d.ts +2 -0
- package/bin/types/src/agent/industry/seven/medical-movement.d.ts +2 -0
- package/bin/types/src/agent/industry/seven/medical-neighborhood.d.ts +2 -0
- package/bin/types/src/agent/industry/seven/primitives.d.ts +31 -0
- package/bin/types/src/agent/industry/seven/registry.d.ts +4 -0
- package/bin/types/src/agent/industry/seven/theme.d.ts +3 -0
- package/bin/types/src/agent/industry/sites/common-ground.d.ts +2 -0
- package/bin/types/src/agent/industry/sites/coordination.d.ts +2 -0
- package/bin/types/src/agent/industry/sites/everyday.d.ts +2 -0
- package/bin/types/src/agent/industry/sites/independent.d.ts +2 -0
- package/bin/types/src/agent/industry/sites/mainstage.d.ts +2 -0
- package/bin/types/src/agent/industry/sites/neighborhood.d.ts +2 -0
- package/bin/types/src/agent/industry/sites/next-chapter.d.ts +2 -0
- package/bin/types/src/agent/industry/sites/practice-notes.d.ts +2 -0
- package/bin/types/src/agent/industry/sites/property-desk.d.ts +2 -0
- package/bin/types/src/agent/industry/sites/residence.d.ts +2 -0
- package/bin/types/src/agent/industry/sites/risk-office.d.ts +2 -0
- package/bin/types/src/agent/industry/sites/workshop.d.ts +2 -0
- package/bin/types/src/agent/industry/types.d.ts +48 -0
- package/bin/types/src/agent/invocation-budget.d.ts +32 -0
- package/bin/types/src/agent/jev/agent-usage.d.ts +165 -0
- package/bin/types/src/agent/jev/batching.d.ts +101 -0
- package/bin/types/src/agent/jev/block-catalog.d.ts +95 -0
- package/bin/types/src/agent/jev/bounds.d.ts +30 -0
- package/bin/types/src/agent/jev/budget.d.ts +76 -0
- package/bin/types/src/agent/jev/business-draft.d.ts +103 -0
- package/bin/types/src/agent/jev/calibration.d.ts +131 -0
- package/bin/types/src/agent/jev/client.d.ts +52 -0
- package/bin/types/src/agent/jev/component-select.d.ts +102 -0
- package/bin/types/src/agent/jev/config.d.ts +52 -0
- package/bin/types/src/agent/jev/consistency.d.ts +105 -0
- package/bin/types/src/agent/jev/content-checks.d.ts +121 -0
- package/bin/types/src/agent/jev/creative.d.ts +81 -0
- package/bin/types/src/agent/jev/critic-report.d.ts +132 -0
- package/bin/types/src/agent/jev/extraction.d.ts +84 -0
- package/bin/types/src/agent/jev/goals.d.ts +43 -0
- package/bin/types/src/agent/jev/html-tree.d.ts +28 -0
- package/bin/types/src/agent/jev/indexing.d.ts +51 -0
- package/bin/types/src/agent/jev/ledger.d.ts +154 -0
- package/bin/types/src/agent/jev/media.d.ts +62 -0
- package/bin/types/src/agent/jev/observations.d.ts +26 -0
- package/bin/types/src/agent/jev/ownership.d.ts +74 -0
- package/bin/types/src/agent/jev/packets.d.ts +124 -0
- package/bin/types/src/agent/jev/policy.d.ts +83 -0
- package/bin/types/src/agent/jev/questions.d.ts +244 -0
- package/bin/types/src/agent/jev/ranking.d.ts +129 -0
- package/bin/types/src/agent/jev/repair.d.ts +73 -0
- package/bin/types/src/agent/jev/review.d.ts +37 -0
- package/bin/types/src/agent/jev/security.d.ts +28 -0
- package/bin/types/src/agent/jev/semantic-lifecycle.d.ts +19 -0
- package/bin/types/src/agent/jev/semantic-tasks.d.ts +89 -0
- package/bin/types/src/agent/jev/service-registry.d.ts +98 -0
- package/bin/types/src/agent/jev/state.d.ts +104 -0
- package/bin/types/src/agent/jev/types.d.ts +190 -0
- package/bin/types/src/agent/jev/visible-assertions.d.ts +84 -0
- package/bin/types/src/agent/kernel-commands.d.ts +2 -0
- package/bin/types/src/agent/kit-runtime.d.ts +12 -0
- package/bin/types/src/agent/legacy-definitions/theme-art.d.ts +5 -0
- package/bin/types/src/agent/legacy-definitions/theme-commissions.d.ts +1 -0
- package/bin/types/src/agent/legacy-definitions/theme-compositions-extremes.d.ts +7 -0
- package/bin/types/src/agent/legacy-definitions/theme-compositions-graphic.d.ts +2 -0
- package/bin/types/src/agent/legacy-definitions/theme-compositions-reading.d.ts +2 -0
- package/bin/types/src/agent/legacy-definitions/theme-compositions-service-extremes.d.ts +2 -0
- package/bin/types/src/agent/legacy-definitions/theme-compositions-service-people.d.ts +2 -0
- package/bin/types/src/agent/legacy-definitions/theme-compositions-service-programme.d.ts +3 -0
- package/bin/types/src/agent/legacy-definitions/theme-compositions-service-project.d.ts +2 -0
- package/bin/types/src/agent/legacy-definitions/theme-compositions-service-season.d.ts +2 -0
- package/bin/types/src/agent/legacy-definitions/theme-compositions-tactile.d.ts +2 -0
- package/bin/types/src/agent/legacy-definitions/theme-compositions.d.ts +2 -0
- package/bin/types/src/agent/legacy-definitions/theme-legacy-specimens.d.ts +8 -0
- package/bin/types/src/agent/legacy-definitions/theme-library-legacy.d.ts +20 -0
- package/bin/types/src/agent/legacy-definitions/theme-library-release2.d.ts +3 -0
- package/bin/types/src/agent/legacy-definitions/theme-service-art.d.ts +7 -0
- package/bin/types/src/agent/legacy-definitions/theme-service-commissions.d.ts +1 -0
- package/bin/types/src/agent/legacy-definitions/theme-specimen-base.d.ts +1 -0
- package/bin/types/src/agent/legacy-definitions/theme-specimens.d.ts +2 -0
- package/bin/types/src/agent/legacy-definitions/theme-suite-data.d.ts +25 -0
- package/bin/types/src/agent/legacy-definitions/theme-suite-style.d.ts +1 -0
- package/bin/types/src/agent/legacy-definitions/theme-suites-checkpoint.d.ts +14 -0
- package/bin/types/src/agent/legacy-definitions/theme-suites-graphic.d.ts +2 -0
- package/bin/types/src/agent/legacy-definitions/theme-suites-information.d.ts +2 -0
- package/bin/types/src/agent/legacy-definitions/theme-suites-local.d.ts +2 -0
- package/bin/types/src/agent/legacy-definitions/theme-suites-material.d.ts +2 -0
- package/bin/types/src/agent/legacy-definitions/theme-suites-practice.d.ts +2 -0
- package/bin/types/src/agent/legacy-definitions/theme-suites-spatial.d.ts +2 -0
- package/bin/types/src/agent/legacy-definitions/theme-suites.d.ts +3 -0
- package/bin/types/src/agent/lifecycle.d.ts +136 -0
- package/bin/types/src/agent/lighthouse-browser.d.ts +5 -0
- package/bin/types/src/agent/media-format.d.ts +5 -0
- package/bin/types/src/agent/migration-links.d.ts +4 -0
- package/bin/types/src/agent/motion-composition.d.ts +22 -0
- package/bin/types/src/agent/motion-knowledge.d.ts +3 -0
- package/bin/types/src/agent/motion-plan.d.ts +6 -0
- package/bin/types/src/agent/performance.d.ts +52 -0
- package/bin/types/src/agent/playwright-runtime.d.ts +8 -0
- package/bin/types/src/agent/preparation.d.ts +193 -0
- package/bin/types/src/agent/preview.d.ts +1 -0
- package/bin/types/src/agent/production-quality.d.ts +72 -0
- package/bin/types/src/agent/reference-contract.d.ts +3 -0
- package/bin/types/src/agent/reference-fit.d.ts +50 -0
- package/bin/types/src/agent/reference-library.d.ts +313 -0
- package/bin/types/src/agent/reference-studies.d.ts +110 -0
- package/bin/types/src/agent/refine.d.ts +348 -0
- package/bin/types/src/agent/result-manifest.d.ts +38 -0
- package/bin/types/src/agent/runner.d.ts +10 -0
- package/bin/types/src/agent/site-inputs.d.ts +26 -0
- package/bin/types/src/agent/source-manifest.d.ts +9 -0
- package/bin/types/src/agent/state-transition.d.ts +16 -0
- package/bin/types/src/agent/storyboard-media.d.ts +11 -0
- package/bin/types/src/agent/study-render.d.ts +27 -0
- package/bin/types/src/agent/template-adaptation.d.ts +69 -0
- package/bin/types/src/agent/template-motion.d.ts +59 -0
- package/bin/types/src/agent/theme-art-direction.d.ts +2 -0
- package/bin/types/src/agent/theme-art.d.ts +1 -0
- package/bin/types/src/agent/theme-assets.d.ts +36 -0
- package/bin/types/src/agent/theme-browse.d.ts +67 -0
- package/bin/types/src/agent/theme-cloud-resources.d.ts +7 -0
- package/bin/types/src/agent/theme-cloud.d.ts +41 -0
- package/bin/types/src/agent/theme-commissions.d.ts +1 -0
- package/bin/types/src/agent/theme-compositions-extremes.d.ts +1 -0
- package/bin/types/src/agent/theme-compositions.d.ts +1 -0
- package/bin/types/src/agent/theme-identity.d.ts +23 -0
- package/bin/types/src/agent/theme-layout-roles.d.ts +7 -0
- package/bin/types/src/agent/theme-legacy-specimens.d.ts +1 -0
- package/bin/types/src/agent/theme-library-legacy.d.ts +1 -0
- package/bin/types/src/agent/theme-library-release2.d.ts +1 -0
- package/bin/types/src/agent/theme-library.d.ts +60 -0
- package/bin/types/src/agent/theme-page-manifest.d.ts +26 -0
- package/bin/types/src/agent/theme-picker-model.d.ts +51 -0
- package/bin/types/src/agent/theme-picker-runtime.d.ts +1 -0
- package/bin/types/src/agent/theme-picker-selection-runtime.d.ts +1 -0
- package/bin/types/src/agent/theme-picker-shell.d.ts +7 -0
- package/bin/types/src/agent/theme-picker-styles.d.ts +1 -0
- package/bin/types/src/agent/theme-picker.d.ts +20 -0
- package/bin/types/src/agent/theme-preview.d.ts +26 -0
- package/bin/types/src/agent/theme-release2/assets.d.ts +22 -0
- package/bin/types/src/agent/theme-release2/specimens.d.ts +2 -0
- package/bin/types/src/agent/theme-release2/theme-art.d.ts +5 -0
- package/bin/types/src/agent/theme-release2/theme-compositions-extremes.d.ts +7 -0
- package/bin/types/src/agent/theme-release2/theme-compositions-graphic.d.ts +2 -0
- package/bin/types/src/agent/theme-release2/theme-compositions-reading.d.ts +2 -0
- package/bin/types/src/agent/theme-release2/theme-compositions-tactile.d.ts +2 -0
- package/bin/types/src/agent/theme-release2/theme-compositions.d.ts +3 -0
- package/bin/types/src/agent/theme-release2/theme-specimen-base.d.ts +1 -0
- package/bin/types/src/agent/theme-release3/theme-art-direction.d.ts +2 -0
- package/bin/types/src/agent/theme-release3/theme-art.d.ts +5 -0
- package/bin/types/src/agent/theme-release3/theme-assets.d.ts +121 -0
- package/bin/types/src/agent/theme-release3/theme-compositions-extremes.d.ts +7 -0
- package/bin/types/src/agent/theme-release3/theme-compositions-graphic.d.ts +2 -0
- package/bin/types/src/agent/theme-release3/theme-compositions-reading.d.ts +2 -0
- package/bin/types/src/agent/theme-release3/theme-compositions-service-extremes.d.ts +2 -0
- package/bin/types/src/agent/theme-release3/theme-compositions-service-people.d.ts +2 -0
- package/bin/types/src/agent/theme-release3/theme-compositions-service-programme.d.ts +2 -0
- package/bin/types/src/agent/theme-release3/theme-compositions-service-project.d.ts +2 -0
- package/bin/types/src/agent/theme-release3/theme-compositions-service-season.d.ts +2 -0
- package/bin/types/src/agent/theme-release3/theme-compositions-tactile.d.ts +2 -0
- package/bin/types/src/agent/theme-release3/theme-compositions.d.ts +2 -0
- package/bin/types/src/agent/theme-release3/theme-identity.d.ts +23 -0
- package/bin/types/src/agent/theme-release3/theme-library.d.ts +4 -0
- package/bin/types/src/agent/theme-release3/theme-service-art.d.ts +7 -0
- package/bin/types/src/agent/theme-release3/theme-specimen-base.d.ts +1 -0
- package/bin/types/src/agent/theme-release3/theme-specimens.d.ts +2 -0
- package/bin/types/src/agent/theme-selection.d.ts +75 -0
- package/bin/types/src/agent/theme-service-art.d.ts +1 -0
- package/bin/types/src/agent/theme-specimen-base.d.ts +1 -0
- package/bin/types/src/agent/theme-specimens.d.ts +1 -0
- package/bin/types/src/agent/theme-suite-data.d.ts +1 -0
- package/bin/types/src/agent/theme-suite-identity.d.ts +42 -0
- package/bin/types/src/agent/theme-suite-primitives.d.ts +14 -0
- package/bin/types/src/agent/theme-suite-renderer.d.ts +8 -0
- package/bin/types/src/agent/theme-suite-style.d.ts +1 -0
- package/bin/types/src/agent/theme-suites.d.ts +1 -0
- package/bin/types/src/agent/theme-thumbnails.d.ts +8 -0
- package/bin/types/src/agent/trace.d.ts +337 -0
- package/bin/types/src/agent/workflow-config.d.ts +25 -0
- package/bin/types/src/agent/workflow.d.ts +104 -0
- package/bin/types/src/blocks/library-profile.d.ts +9 -0
- package/bin/types/src/blocks/metadata.d.ts +65 -0
- package/bin/types/src/build/index.d.ts +29 -0
- package/bin/types/src/build/responsive-media.d.ts +19 -0
- package/bin/types/src/build/serve.d.ts +4 -0
- package/bin/types/src/build/static-output.d.ts +2 -0
- package/bin/types/src/build/verified.d.ts +1 -0
- package/bin/types/src/cli/api.d.ts +17 -0
- package/bin/types/src/cli/deploy.d.ts +21 -0
- package/bin/types/src/cli/doctor.d.ts +16 -0
- package/bin/types/src/cli/events.d.ts +16 -0
- package/bin/types/src/cli/feedback.d.ts +21 -0
- package/bin/types/src/cli/forms.d.ts +16 -0
- package/bin/types/src/cli/index.d.ts +1 -0
- package/bin/types/src/cli/lifecycle.d.ts +18 -0
- package/bin/types/src/cli/preserve.d.ts +8 -0
- package/bin/types/src/cli/preview.d.ts +14 -0
- package/bin/types/src/cli/refine.d.ts +41 -0
- package/bin/types/src/cli/root.d.ts +3 -0
- package/bin/types/src/cli/run.d.ts +30 -0
- package/bin/types/src/cli/share.d.ts +17 -0
- package/bin/types/src/cli/site-create.d.ts +24 -0
- package/bin/types/src/cli/site-migrate.d.ts +11 -0
- package/bin/types/src/cli/status.d.ts +8 -0
- package/bin/types/src/cli/types.d.ts +34 -0
- package/bin/types/src/cli/upgrade.d.ts +11 -0
- package/bin/types/src/cli/verify.d.ts +17 -0
- package/bin/types/src/cli/workflow-argv.d.ts +2 -0
- package/bin/types/src/compile/flatten.d.ts +23 -0
- package/bin/types/src/compile/frontmatter.d.ts +10 -0
- package/bin/types/src/compile/icons.d.ts +2 -0
- package/bin/types/src/compile/paths.d.ts +4 -0
- package/bin/types/src/compile/primitives.d.ts +2 -0
- package/bin/types/src/compile/scroll-motion.d.ts +14 -0
- package/bin/types/src/compile/site.d.ts +40 -0
- package/bin/types/src/editing/identity.d.ts +7 -0
- package/bin/types/src/editing/manifest.d.ts +38 -0
- package/bin/types/src/engine/checks.d.ts +2 -0
- package/bin/types/src/engine/contracts.d.ts +104 -0
- package/bin/types/src/engine/impact.d.ts +3 -0
- package/bin/types/src/engine/index.d.ts +70 -0
- package/bin/types/src/engine/revision.d.ts +5 -0
- package/bin/types/src/forms/cloudflare.d.ts +24 -0
- package/bin/types/src/forms/config.d.ts +34 -0
- package/bin/types/src/forms/frontend.d.ts +9 -0
- package/bin/types/src/html.d.ts +3 -0
- package/bin/types/src/icons/catalog.d.ts +28 -0
- package/bin/types/src/icons/coverage.d.ts +12 -0
- package/bin/types/src/icons/drawing.d.ts +7 -0
- package/bin/types/src/icons/duotone.d.ts +4 -0
- package/bin/types/src/icons/index.d.ts +37 -0
- package/bin/types/src/icons/industry-refinements-v4.d.ts +4 -0
- package/bin/types/src/icons/industry-review.d.ts +11 -0
- package/bin/types/src/icons/industry.d.ts +2 -0
- package/bin/types/src/icons/refinements.d.ts +5 -0
- package/bin/types/src/icons/studio-industry-review.d.ts +9 -0
- package/bin/types/src/icons/studio-industry.d.ts +5 -0
- package/bin/types/src/icons/studio.d.ts +34 -0
- package/bin/types/src/integrations/cloudflare-pages.d.ts +10 -0
- package/bin/types/src/integrations/deployment-smoke.d.ts +11 -0
- package/bin/types/src/integrations/hosting.d.ts +33 -0
- package/bin/types/src/integrations/wrangler-command.d.ts +5 -0
- package/bin/types/src/knowledge/artifact-order.d.ts +1 -0
- package/bin/types/src/knowledge/artifact.d.ts +11 -0
- package/bin/types/src/knowledge/composition.d.ts +54 -0
- package/bin/types/src/knowledge/contracts.d.ts +111 -0
- package/bin/types/src/knowledge/explain.d.ts +6 -0
- package/bin/types/src/knowledge/pack.d.ts +32 -0
- package/bin/types/src/knowledge/selection.d.ts +18 -0
- package/bin/types/src/knowledge/site-widgets.d.ts +6 -0
- package/bin/types/src/onboard/brief.d.ts +182 -0
- package/bin/types/src/onboard/classify.d.ts +31 -0
- package/bin/types/src/onboard/crawl-order.d.ts +7 -0
- package/bin/types/src/onboard/extract.d.ts +102 -0
- package/bin/types/src/onboard/harvest-inventory.d.ts +84 -0
- package/bin/types/src/onboard/outline.d.ts +13 -0
- package/bin/types/src/onboard/quality.d.ts +6 -0
- package/bin/types/src/onboard/shortlist.d.ts +11 -0
- package/bin/types/src/onboard/social.d.ts +15 -0
- package/bin/types/src/onboard/visual-hints.d.ts +12 -0
- package/bin/types/src/preserve/build.d.ts +1 -0
- package/bin/types/src/preserve/capture.d.ts +21 -0
- package/bin/types/src/preserve/components.d.ts +10 -0
- package/bin/types/src/preserve/config.d.ts +53 -0
- package/bin/types/src/preserve/embeds.d.ts +15 -0
- package/bin/types/src/preserve/hovers.d.ts +10 -0
- package/bin/types/src/preserve/react-capabilities.d.ts +2 -0
- package/bin/types/src/preserve/runtime.d.ts +2 -0
- package/bin/types/src/preserve/source-defects.d.ts +4 -0
- package/bin/types/src/preserve/supplement.d.ts +3 -0
- package/bin/types/src/preserve/verify.d.ts +29 -0
- package/bin/types/src/render.d.ts +10 -0
- package/bin/types/src/runtime/beacon.d.ts +2 -0
- package/bin/types/src/runtime/before-after.d.ts +2 -0
- package/bin/types/src/runtime/carousel.d.ts +2 -0
- package/bin/types/src/runtime/cookie-compliance.d.ts +14 -0
- package/bin/types/src/runtime/experience.d.ts +4 -0
- package/bin/types/src/runtime/header.d.ts +2 -0
- package/bin/types/src/runtime/leads.d.ts +2 -0
- package/bin/types/src/runtime/lightbox.d.ts +2 -0
- package/bin/types/src/runtime/scroll-motion.generated.d.ts +4 -0
- package/bin/types/src/runtime/tabs.d.ts +2 -0
- package/bin/types/src/schema.d.ts +27 -0
- package/bin/types/src/stock/library.d.ts +14 -0
- package/bin/types/src/stock/search.d.ts +30 -0
- package/bin/types/src/stock/selection.d.ts +30 -0
- package/bin/types/src/stock/types.d.ts +54 -0
- package/bin/types/src/theme.d.ts +3 -0
- package/bin/types/src/types.d.ts +115 -0
- package/bin/types/src/upgrade/kit.d.ts +48 -0
- package/bin/vitris-art.js +192 -0
- package/bin/vitris-blocks.js +238 -0
- package/bin/vitris-build.js +24 -0
- package/bin/vitris-catalog.js +49 -0
- package/bin/vitris-content-coverage.js +21 -0
- package/bin/vitris-create-site.js +86 -0
- package/bin/vitris-cursor-hook.js +61 -0
- package/bin/vitris-eval.js +76 -0
- package/bin/vitris-go.js +99 -0
- package/bin/vitris-harvest.js +184 -0
- package/bin/vitris-icons.js +168 -0
- package/bin/vitris-knowledge.js +43 -0
- package/bin/vitris-launch-preflight.js +964 -0
- package/bin/vitris-media-serve.js +50 -0
- package/bin/vitris-migrate-site.js +20 -0
- package/bin/vitris-motion-view.js +80 -0
- package/bin/vitris-prepare-media.js +64 -0
- package/bin/vitris-preview.js +36 -0
- package/bin/vitris-references.js +173 -0
- package/bin/vitris-refresh.js +50 -0
- package/bin/vitris-sign-publish-bundle.js +64 -0
- package/bin/vitris-stock.js +161 -0
- package/bin/vitris-templates.js +261 -0
- package/bin/vitris-themes.js +321 -0
- package/bin/vitris-upgrade.js +50 -0
- package/bin/vitris-verify-browser.js +662 -0
- package/bin/vitris-verify-performance.js +44 -0
- package/bin/vitris.js +50 -0
- package/blocks/CONVENTIONS.md +121 -0
- package/blocks/INDEX.md +130 -0
- package/blocks/about/about-awards/README.md +36 -0
- package/blocks/about/about-awards/styles.css +13 -0
- package/blocks/about/about-awards/template.html +1 -0
- package/blocks/about/about-credentials/README.md +33 -0
- package/blocks/about/about-credentials/block.meta.json +85 -0
- package/blocks/about/about-credentials/styles.css +4 -0
- package/blocks/about/about-credentials/template.html +1 -0
- package/blocks/about/about-founder/README.md +35 -0
- package/blocks/about/about-founder/styles.css +9 -0
- package/blocks/about/about-founder/template.html +1 -0
- package/blocks/about/about-mission/README.md +31 -0
- package/blocks/about/about-mission/styles.css +5 -0
- package/blocks/about/about-mission/template.html +1 -0
- package/blocks/about/about-statement/README.md +28 -0
- package/blocks/about/about-statement/styles.css +7 -0
- package/blocks/about/about-statement/template.html +1 -0
- package/blocks/about/about-story/README.md +35 -0
- package/blocks/about/about-story/styles.css +5 -0
- package/blocks/about/about-story/template.html +1 -0
- package/blocks/about/about-timeline/README.md +33 -0
- package/blocks/about/about-timeline/styles.css +8 -0
- package/blocks/about/about-timeline/template.html +1 -0
- package/blocks/about/about-values/README.md +31 -0
- package/blocks/about/about-values/styles.css +3 -0
- package/blocks/about/about-values/template.html +1 -0
- package/blocks/blog/blog-featured/README.md +39 -0
- package/blocks/blog/blog-featured/styles.css +12 -0
- package/blocks/blog/blog-featured/template.html +1 -0
- package/blocks/blog/blog-index/README.md +34 -0
- package/blocks/blog/blog-index/styles.css +6 -0
- package/blocks/blog/blog-index/template.html +1 -0
- package/blocks/blog/blog-post-header/README.md +31 -0
- package/blocks/blog/blog-post-header/styles.css +8 -0
- package/blocks/blog/blog-post-header/template.html +1 -0
- package/blocks/contact/contact-cards/README.md +32 -0
- package/blocks/contact/contact-cards/styles.css +7 -0
- package/blocks/contact/contact-cards/template.html +1 -0
- package/blocks/contact/contact-chips/README.md +41 -0
- package/blocks/contact/contact-chips/styles.css +13 -0
- package/blocks/contact/contact-chips/template.html +1 -0
- package/blocks/contact/contact-hours/README.md +41 -0
- package/blocks/contact/contact-hours/block.meta.json +87 -0
- package/blocks/contact/contact-hours/styles.css +8 -0
- package/blocks/contact/contact-hours/template.html +1 -0
- package/blocks/contact/contact-map/README.md +39 -0
- package/blocks/contact/contact-map/styles.css +10 -0
- package/blocks/contact/contact-map/template.html +1 -0
- package/blocks/contact/contact-offices/README.md +32 -0
- package/blocks/contact/contact-offices/styles.css +8 -0
- package/blocks/contact/contact-offices/template.html +1 -0
- package/blocks/contact/contact-phone-first/README.md +33 -0
- package/blocks/contact/contact-phone-first/block.meta.json +86 -0
- package/blocks/contact/contact-phone-first/styles.css +11 -0
- package/blocks/contact/contact-phone-first/template.html +1 -0
- package/blocks/contact/contact-split/README.md +43 -0
- package/blocks/contact/contact-split/styles.css +12 -0
- package/blocks/contact/contact-split/template.html +1 -0
- package/blocks/contact/contact-visit/README.md +36 -0
- package/blocks/contact/contact-visit/block.meta.json +88 -0
- package/blocks/contact/contact-visit/styles.css +13 -0
- package/blocks/contact/contact-visit/template.html +1 -0
- package/blocks/contact/service-areas/README.md +32 -0
- package/blocks/contact/service-areas/styles.css +9 -0
- package/blocks/contact/service-areas/template.html +1 -0
- package/blocks/content/glossary/README.md +35 -0
- package/blocks/content/glossary/styles.css +6 -0
- package/blocks/content/glossary/template.html +1 -0
- package/blocks/content/list-split/README.md +33 -0
- package/blocks/content/list-split/styles.css +13 -0
- package/blocks/content/list-split/template.html +1 -0
- package/blocks/content/prose-split/README.md +32 -0
- package/blocks/content/prose-split/styles.css +12 -0
- package/blocks/content/prose-split/template.html +1 -0
- package/blocks/content/specification-ledger/README.md +32 -0
- package/blocks/content/specification-ledger/block.meta.json +85 -0
- package/blocks/content/specification-ledger/styles.css +10 -0
- package/blocks/content/specification-ledger/template.html +1 -0
- package/blocks/cta/cta-band/README.md +33 -0
- package/blocks/cta/cta-band/styles.css +11 -0
- package/blocks/cta/cta-band/template.html +1 -0
- package/blocks/cta/cta-card/README.md +35 -0
- package/blocks/cta/cta-card/styles.css +8 -0
- package/blocks/cta/cta-card/template.html +1 -0
- package/blocks/cta/cta-floating-bar/README.md +28 -0
- package/blocks/cta/cta-floating-bar/styles.css +8 -0
- package/blocks/cta/cta-floating-bar/template.html +1 -0
- package/blocks/cta/cta-inline/README.md +30 -0
- package/blocks/cta/cta-inline/styles.css +9 -0
- package/blocks/cta/cta-inline/template.html +1 -0
- package/blocks/cta/cta-newsletter/README.md +34 -0
- package/blocks/cta/cta-newsletter/styles.css +8 -0
- package/blocks/cta/cta-newsletter/template.html +1 -0
- package/blocks/cta/cta-photo-fan/README.md +36 -0
- package/blocks/cta/cta-photo-fan/styles.css +14 -0
- package/blocks/cta/cta-photo-fan/template.html +1 -0
- package/blocks/cta/cta-split/README.md +38 -0
- package/blocks/cta/cta-split/styles.css +10 -0
- package/blocks/cta/cta-split/template.html +1 -0
- package/blocks/faq/faq-accordion/README.md +36 -0
- package/blocks/faq/faq-accordion/styles.css +6 -0
- package/blocks/faq/faq-accordion/template.html +1 -0
- package/blocks/faq/faq-grouped/README.md +40 -0
- package/blocks/faq/faq-grouped/styles.css +20 -0
- package/blocks/faq/faq-grouped/template.html +1 -0
- package/blocks/faq/faq-split/README.md +37 -0
- package/blocks/faq/faq-split/styles.css +5 -0
- package/blocks/faq/faq-split/template.html +1 -0
- package/blocks/faq/faq-tabs/README.md +36 -0
- package/blocks/faq/faq-tabs/styles.css +3 -0
- package/blocks/faq/faq-tabs/template.html +1 -0
- package/blocks/feature/feature-bento/README.md +33 -0
- package/blocks/feature/feature-bento/styles.css +7 -0
- package/blocks/feature/feature-bento/template.html +1 -0
- package/blocks/feature/feature-compare-table/README.md +44 -0
- package/blocks/feature/feature-compare-table/styles.css +15 -0
- package/blocks/feature/feature-compare-table/template.html +1 -0
- package/blocks/feature/feature-comparison/README.md +34 -0
- package/blocks/feature/feature-comparison/styles.css +6 -0
- package/blocks/feature/feature-comparison/template.html +1 -0
- package/blocks/feature/feature-grid-3/README.md +34 -0
- package/blocks/feature/feature-grid-3/styles.css +8 -0
- package/blocks/feature/feature-grid-3/template.html +1 -0
- package/blocks/feature/feature-icon-list/README.md +39 -0
- package/blocks/feature/feature-icon-list/styles.css +9 -0
- package/blocks/feature/feature-icon-list/template.html +1 -0
- package/blocks/feature/feature-spotlight/README.md +39 -0
- package/blocks/feature/feature-spotlight/styles.css +5 -0
- package/blocks/feature/feature-spotlight/template.html +1 -0
- package/blocks/feature/feature-stats-band/README.md +33 -0
- package/blocks/feature/feature-stats-band/styles.css +8 -0
- package/blocks/feature/feature-stats-band/template.html +1 -0
- package/blocks/feature/feature-tabs/README.md +38 -0
- package/blocks/feature/feature-tabs/styles.css +7 -0
- package/blocks/feature/feature-tabs/template.html +1 -0
- package/blocks/feature/feature-thumb-list/README.md +38 -0
- package/blocks/feature/feature-thumb-list/styles.css +13 -0
- package/blocks/feature/feature-thumb-list/template.html +1 -0
- package/blocks/feature/feature-zigzag/README.md +31 -0
- package/blocks/feature/feature-zigzag/styles.css +6 -0
- package/blocks/feature/feature-zigzag/template.html +1 -0
- package/blocks/footer/footer-columns/README.md +39 -0
- package/blocks/footer/footer-columns/styles.css +16 -0
- package/blocks/footer/footer-columns/template.html +1 -0
- package/blocks/footer/footer-compact/README.md +33 -0
- package/blocks/footer/footer-compact/styles.css +12 -0
- package/blocks/footer/footer-compact/template.html +1 -0
- package/blocks/footer/footer-cta/README.md +37 -0
- package/blocks/footer/footer-cta/styles.css +18 -0
- package/blocks/footer/footer-cta/template.html +1 -0
- package/blocks/footer/footer-social/README.md +37 -0
- package/blocks/footer/footer-social/styles.css +17 -0
- package/blocks/footer/footer-social/template.html +1 -0
- package/blocks/footer/footer-wordmark/README.md +40 -0
- package/blocks/footer/footer-wordmark/styles.css +19 -0
- package/blocks/footer/footer-wordmark/template.html +1 -0
- package/blocks/gallery/gallery-before-after/README.md +31 -0
- package/blocks/gallery/gallery-before-after/styles.css +6 -0
- package/blocks/gallery/gallery-before-after/template.html +1 -0
- package/blocks/gallery/gallery-carousel/README.md +32 -0
- package/blocks/gallery/gallery-carousel/styles.css +7 -0
- package/blocks/gallery/gallery-carousel/template.html +1 -0
- package/blocks/gallery/gallery-grid/README.md +39 -0
- package/blocks/gallery/gallery-grid/styles.css +13 -0
- package/blocks/gallery/gallery-grid/template.html +1 -0
- package/blocks/gallery/gallery-masonry/README.md +33 -0
- package/blocks/gallery/gallery-masonry/styles.css +4 -0
- package/blocks/gallery/gallery-masonry/template.html +1 -0
- package/blocks/gallery/gallery-mosaic-split/README.md +40 -0
- package/blocks/gallery/gallery-mosaic-split/styles.css +15 -0
- package/blocks/gallery/gallery-mosaic-split/template.html +1 -0
- package/blocks/hero/hero-asymmetric/README.md +34 -0
- package/blocks/hero/hero-asymmetric/styles.css +13 -0
- package/blocks/hero/hero-asymmetric/template.html +10 -0
- package/blocks/hero/hero-before-after/README.md +38 -0
- package/blocks/hero/hero-before-after/styles.css +8 -0
- package/blocks/hero/hero-before-after/template.html +19 -0
- package/blocks/hero/hero-editorial/README.md +34 -0
- package/blocks/hero/hero-editorial/block.meta.json +85 -0
- package/blocks/hero/hero-editorial/styles.css +6 -0
- package/blocks/hero/hero-editorial/template.html +10 -0
- package/blocks/hero/hero-evidence/README.md +32 -0
- package/blocks/hero/hero-evidence/block.meta.json +85 -0
- package/blocks/hero/hero-evidence/styles.css +13 -0
- package/blocks/hero/hero-evidence/template.html +1 -0
- package/blocks/hero/hero-form/README.md +46 -0
- package/blocks/hero/hero-form/styles.css +11 -0
- package/blocks/hero/hero-form/template.html +15 -0
- package/blocks/hero/hero-menu/README.md +36 -0
- package/blocks/hero/hero-menu/styles.css +7 -0
- package/blocks/hero/hero-menu/template.html +10 -0
- package/blocks/hero/hero-overlay/README.md +35 -0
- package/blocks/hero/hero-overlay/styles.css +14 -0
- package/blocks/hero/hero-overlay/template.html +10 -0
- package/blocks/hero/hero-page/README.md +35 -0
- package/blocks/hero/hero-page/styles.css +19 -0
- package/blocks/hero/hero-page/template.html +1 -0
- package/blocks/hero/hero-product/README.md +41 -0
- package/blocks/hero/hero-product/styles.css +11 -0
- package/blocks/hero/hero-product/template.html +14 -0
- package/blocks/hero/hero-service/README.md +37 -0
- package/blocks/hero/hero-service/block.meta.json +85 -0
- package/blocks/hero/hero-service/styles.css +17 -0
- package/blocks/hero/hero-service/template.html +1 -0
- package/blocks/hero/hero-split/README.md +36 -0
- package/blocks/hero/hero-split/styles.css +7 -0
- package/blocks/hero/hero-split/template.html +11 -0
- package/blocks/hero/hero-statement/README.md +33 -0
- package/blocks/hero/hero-statement/styles.css +8 -0
- package/blocks/hero/hero-statement/template.html +1 -0
- package/blocks/hero/hero-stats/README.md +37 -0
- package/blocks/hero/hero-stats/styles.css +10 -0
- package/blocks/hero/hero-stats/template.html +10 -0
- package/blocks/hero/hero-video-still/README.md +36 -0
- package/blocks/hero/hero-video-still/styles.css +9 -0
- package/blocks/hero/hero-video-still/template.html +13 -0
- package/blocks/icons.md +44 -0
- package/blocks/incentives/incentive-banner/README.md +28 -0
- package/blocks/incentives/incentive-banner/styles.css +7 -0
- package/blocks/incentives/incentive-banner/template.html +1 -0
- package/blocks/incentives/incentive-cards/README.md +31 -0
- package/blocks/incentives/incentive-cards/styles.css +4 -0
- package/blocks/incentives/incentive-cards/template.html +1 -0
- package/blocks/navbar/nav-announcement/README.md +35 -0
- package/blocks/navbar/nav-announcement/styles.css +10 -0
- package/blocks/navbar/nav-announcement/template.html +14 -0
- package/blocks/navbar/nav-centered/README.md +35 -0
- package/blocks/navbar/nav-centered/styles.css +11 -0
- package/blocks/navbar/nav-centered/template.html +12 -0
- package/blocks/navbar/nav-minimal/README.md +29 -0
- package/blocks/navbar/nav-minimal/styles.css +5 -0
- package/blocks/navbar/nav-minimal/template.html +6 -0
- package/blocks/navbar/nav-split/README.md +34 -0
- package/blocks/navbar/nav-split/styles.css +11 -0
- package/blocks/navbar/nav-split/template.html +11 -0
- package/blocks/navbar/nav-utility/README.md +37 -0
- package/blocks/navbar/nav-utility/styles.css +17 -0
- package/blocks/navbar/nav-utility/template.html +12 -0
- package/blocks/pricing/menu-featured/README.md +34 -0
- package/blocks/pricing/menu-featured/styles.css +4 -0
- package/blocks/pricing/menu-featured/template.html +1 -0
- package/blocks/pricing/menu-sections/README.md +33 -0
- package/blocks/pricing/menu-sections/styles.css +9 -0
- package/blocks/pricing/menu-sections/template.html +1 -0
- package/blocks/pricing/pricing-table/README.md +40 -0
- package/blocks/pricing/pricing-table/styles.css +9 -0
- package/blocks/pricing/pricing-table/template.html +1 -0
- package/blocks/pricing/pricing-tiers/README.md +34 -0
- package/blocks/pricing/pricing-tiers/styles.css +7 -0
- package/blocks/pricing/pricing-tiers/template.html +1 -0
- package/blocks/pricing/pricing-toggle/README.md +34 -0
- package/blocks/pricing/pricing-toggle/styles.css +10 -0
- package/blocks/pricing/pricing-toggle/template.html +1 -0
- package/blocks/process/process-carousel/README.md +33 -0
- package/blocks/process/process-carousel/styles.css +5 -0
- package/blocks/process/process-carousel/template.html +1 -0
- package/blocks/process/process-split/README.md +35 -0
- package/blocks/process/process-split/styles.css +6 -0
- package/blocks/process/process-split/template.html +1 -0
- package/blocks/process/process-stepper/README.md +40 -0
- package/blocks/process/process-stepper/styles.css +11 -0
- package/blocks/process/process-stepper/template.html +1 -0
- package/blocks/process/process-steps/README.md +35 -0
- package/blocks/process/process-steps/styles.css +6 -0
- package/blocks/process/process-steps/template.html +1 -0
- package/blocks/process/process-sticky/README.md +38 -0
- package/blocks/process/process-sticky/styles.css +12 -0
- package/blocks/process/process-sticky/template.html +1 -0
- package/blocks/process/process-timeline/README.md +35 -0
- package/blocks/process/process-timeline/styles.css +10 -0
- package/blocks/process/process-timeline/template.html +1 -0
- package/blocks/services/services-cards/README.md +34 -0
- package/blocks/services/services-cards/styles.css +3 -0
- package/blocks/services/services-cards/template.html +1 -0
- package/blocks/services/services-carousel/README.md +34 -0
- package/blocks/services/services-carousel/styles.css +6 -0
- package/blocks/services/services-carousel/template.html +1 -0
- package/blocks/services/services-list/README.md +32 -0
- package/blocks/services/services-list/block.meta.json +85 -0
- package/blocks/services/services-list/styles.css +10 -0
- package/blocks/services/services-list/template.html +1 -0
- package/blocks/services/services-menu/README.md +39 -0
- package/blocks/services/services-menu/styles.css +6 -0
- package/blocks/services/services-menu/template.html +1 -0
- package/blocks/services/services-packages/README.md +34 -0
- package/blocks/services/services-packages/styles.css +6 -0
- package/blocks/services/services-packages/template.html +1 -0
- package/blocks/services/services-panels/README.md +36 -0
- package/blocks/services/services-panels/styles.css +15 -0
- package/blocks/services/services-panels/template.html +1 -0
- package/blocks/services/services-photo-grid/README.md +39 -0
- package/blocks/services/services-photo-grid/styles.css +10 -0
- package/blocks/services/services-photo-grid/template.html +1 -0
- package/blocks/services/services-priority/README.md +33 -0
- package/blocks/services/services-priority/block.meta.json +86 -0
- package/blocks/services/services-priority/styles.css +16 -0
- package/blocks/services/services-priority/template.html +1 -0
- package/blocks/stats/stats-cards/README.md +31 -0
- package/blocks/stats/stats-cards/styles.css +4 -0
- package/blocks/stats/stats-cards/template.html +1 -0
- package/blocks/stats/stats-mosaic/README.md +27 -0
- package/blocks/stats/stats-mosaic/styles.css +9 -0
- package/blocks/stats/stats-mosaic/template.html +1 -0
- package/blocks/stats/stats-row/README.md +29 -0
- package/blocks/stats/stats-row/styles.css +8 -0
- package/blocks/stats/stats-row/template.html +1 -0
- package/blocks/stats/stats-split/README.md +35 -0
- package/blocks/stats/stats-split/styles.css +3 -0
- package/blocks/stats/stats-split/template.html +1 -0
- package/blocks/team/team-featured/README.md +42 -0
- package/blocks/team/team-featured/styles.css +9 -0
- package/blocks/team/team-featured/template.html +1 -0
- package/blocks/team/team-grid/README.md +35 -0
- package/blocks/team/team-grid/styles.css +8 -0
- package/blocks/team/team-grid/template.html +1 -0
- package/blocks/team/team-list/README.md +32 -0
- package/blocks/team/team-list/styles.css +7 -0
- package/blocks/team/team-list/template.html +1 -0
- package/blocks/testimonial/testimonial-carousel/README.md +32 -0
- package/blocks/testimonial/testimonial-carousel/styles.css +7 -0
- package/blocks/testimonial/testimonial-carousel/template.html +1 -0
- package/blocks/testimonial/testimonial-grid/README.md +32 -0
- package/blocks/testimonial/testimonial-grid/styles.css +5 -0
- package/blocks/testimonial/testimonial-grid/template.html +1 -0
- package/blocks/testimonial/testimonial-mosaic/README.md +38 -0
- package/blocks/testimonial/testimonial-mosaic/styles.css +14 -0
- package/blocks/testimonial/testimonial-mosaic/template.html +1 -0
- package/blocks/testimonial/testimonial-platform/README.md +34 -0
- package/blocks/testimonial/testimonial-platform/styles.css +17 -0
- package/blocks/testimonial/testimonial-platform/template.html +1 -0
- package/blocks/testimonial/testimonial-rating/README.md +28 -0
- package/blocks/testimonial/testimonial-rating/styles.css +6 -0
- package/blocks/testimonial/testimonial-rating/template.html +1 -0
- package/blocks/testimonial/testimonial-spotlight/README.md +31 -0
- package/blocks/testimonial/testimonial-spotlight/styles.css +9 -0
- package/blocks/testimonial/testimonial-spotlight/template.html +1 -0
- package/blocks/testimonial/testimonial-switcher/README.md +39 -0
- package/blocks/testimonial/testimonial-switcher/styles.css +23 -0
- package/blocks/testimonial/testimonial-switcher/template.html +1 -0
- package/blocks/testimonial/testimonial-wall/README.md +34 -0
- package/blocks/testimonial/testimonial-wall/styles.css +7 -0
- package/blocks/testimonial/testimonial-wall/template.html +1 -0
- package/blocks/trust-strip/trust-badges/README.md +30 -0
- package/blocks/trust-strip/trust-badges/styles.css +5 -0
- package/blocks/trust-strip/trust-badges/template.html +1 -0
- package/blocks/trust-strip/trust-certs/README.md +31 -0
- package/blocks/trust-strip/trust-certs/styles.css +12 -0
- package/blocks/trust-strip/trust-certs/template.html +1 -0
- package/blocks/trust-strip/trust-logos/README.md +32 -0
- package/blocks/trust-strip/trust-logos/styles.css +5 -0
- package/blocks/trust-strip/trust-logos/template.html +1 -0
- package/blocks/trust-strip/trust-quote/README.md +29 -0
- package/blocks/trust-strip/trust-quote/styles.css +5 -0
- package/blocks/trust-strip/trust-quote/template.html +1 -0
- package/blocks/trust-strip/trust-reviews/README.md +35 -0
- package/blocks/trust-strip/trust-reviews/styles.css +9 -0
- package/blocks/trust-strip/trust-reviews/template.html +1 -0
- package/blocks/work/case-alternating/README.md +34 -0
- package/blocks/work/case-alternating/block.meta.json +86 -0
- package/blocks/work/case-alternating/styles.css +7 -0
- package/blocks/work/case-alternating/template.html +1 -0
- package/blocks/work/case-carousel/README.md +26 -0
- package/blocks/work/case-carousel/styles.css +7 -0
- package/blocks/work/case-carousel/template.html +1 -0
- package/blocks/work/case-header/README.md +38 -0
- package/blocks/work/case-header/styles.css +18 -0
- package/blocks/work/case-header/template.html +1 -0
- package/blocks/work/project-evidence/README.md +35 -0
- package/blocks/work/project-evidence/block.meta.json +87 -0
- package/blocks/work/project-evidence/styles.css +12 -0
- package/blocks/work/project-evidence/template.html +1 -0
- package/blocks/work/project-grid/README.md +38 -0
- package/blocks/work/project-grid/styles.css +9 -0
- package/blocks/work/project-grid/template.html +1 -0
- package/cloudflare/wrangler.forms-test.jsonc +19 -0
- package/cloudflare/wrangler.jsonc +14 -0
- package/cloudflare/wrangler.templates.jsonc +6 -0
- package/design-system/MASTER.md +76 -0
- package/design-system/calibration/v2/accuracy.html +1 -0
- package/design-system/calibration/v2/accuracy.png +0 -0
- package/design-system/calibration/v2/manifest.json +88 -0
- package/design-system/calibration/v2/probe.png +0 -0
- package/design-system/calibration/v2/vitris-northline-counsel-home-1280-viewport.png +0 -0
- package/design-system/calibration/v2/vitris-northline-counsel-home-375-viewport.png +0 -0
- package/design-system/calibration/v2/vitris-northline-counsel-planning-1280-viewport.png +0 -0
- package/design-system/calibration/v2/vitris-northline-counsel-planning-375-viewport.png +0 -0
- package/design-system/calibration/v2/vitris-tide-and-slate-home-1280-viewport.png +0 -0
- package/design-system/calibration/v2/vitris-tide-and-slate-home-375-viewport.png +0 -0
- package/design-system/calibration/v2/vitris-tide-and-slate-project-1280-viewport.png +0 -0
- package/design-system/calibration/v2/vitris-tide-and-slate-project-375-viewport.png +0 -0
- package/design-system/compositions/v1/README.md +13 -0
- package/design-system/compositions/v1/northline-counsel/components/contact-phone-first/styles.css +11 -0
- package/design-system/compositions/v1/northline-counsel/components/contact-phone-first/template.html +1 -0
- package/design-system/compositions/v1/northline-counsel/components/contact-visit/styles.css +13 -0
- package/design-system/compositions/v1/northline-counsel/components/contact-visit/template.html +1 -0
- package/design-system/compositions/v1/northline-counsel/components/footer-compact/styles.css +12 -0
- package/design-system/compositions/v1/northline-counsel/components/footer-compact/template.html +1 -0
- package/design-system/compositions/v1/northline-counsel/components/hero-evidence/styles.css +13 -0
- package/design-system/compositions/v1/northline-counsel/components/hero-evidence/template.html +1 -0
- package/design-system/compositions/v1/northline-counsel/components/hero-page/styles.css +19 -0
- package/design-system/compositions/v1/northline-counsel/components/hero-page/template.html +1 -0
- package/design-system/compositions/v1/northline-counsel/components/nav-split/styles.css +11 -0
- package/design-system/compositions/v1/northline-counsel/components/nav-split/template.html +11 -0
- package/design-system/compositions/v1/northline-counsel/components/services-priority/styles.css +16 -0
- package/design-system/compositions/v1/northline-counsel/components/services-priority/template.html +1 -0
- package/design-system/compositions/v1/northline-counsel/components/specification-ledger/styles.css +10 -0
- package/design-system/compositions/v1/northline-counsel/components/specification-ledger/template.html +1 -0
- package/design-system/compositions/v1/northline-counsel/direction.md +5 -0
- package/design-system/compositions/v1/northline-counsel/fixture-brief.json +10 -0
- package/design-system/compositions/v1/northline-counsel/media-inventory.json +1 -0
- package/design-system/compositions/v1/northline-counsel/pages/index.html +11 -0
- package/design-system/compositions/v1/northline-counsel/pages/planning.html +11 -0
- package/design-system/compositions/v1/northline-counsel/selection-receipt.json +36 -0
- package/design-system/compositions/v1/northline-counsel/site.json +1 -0
- package/design-system/compositions/v1/northline-counsel/storyboard.md +12 -0
- package/design-system/compositions/v1/northline-counsel/theme/defaults.json +1 -0
- package/design-system/compositions/v1/source-ledger.json +18 -0
- package/design-system/compositions/v1/tide-and-slate/components/contact-phone-first/styles.css +11 -0
- package/design-system/compositions/v1/tide-and-slate/components/contact-phone-first/template.html +1 -0
- package/design-system/compositions/v1/tide-and-slate/components/footer-compact/styles.css +12 -0
- package/design-system/compositions/v1/tide-and-slate/components/footer-compact/template.html +1 -0
- package/design-system/compositions/v1/tide-and-slate/components/hero-page/styles.css +19 -0
- package/design-system/compositions/v1/tide-and-slate/components/hero-page/template.html +1 -0
- package/design-system/compositions/v1/tide-and-slate/components/hero-split/styles.css +7 -0
- package/design-system/compositions/v1/tide-and-slate/components/hero-split/template.html +11 -0
- package/design-system/compositions/v1/tide-and-slate/components/nav-split/styles.css +11 -0
- package/design-system/compositions/v1/tide-and-slate/components/nav-split/template.html +11 -0
- package/design-system/compositions/v1/tide-and-slate/components/project-evidence/styles.css +12 -0
- package/design-system/compositions/v1/tide-and-slate/components/project-evidence/template.html +1 -0
- package/design-system/compositions/v1/tide-and-slate/components/services-priority/styles.css +16 -0
- package/design-system/compositions/v1/tide-and-slate/components/services-priority/template.html +1 -0
- package/design-system/compositions/v1/tide-and-slate/components/specification-ledger/styles.css +10 -0
- package/design-system/compositions/v1/tide-and-slate/components/specification-ledger/template.html +1 -0
- package/design-system/compositions/v1/tide-and-slate/direction.md +5 -0
- package/design-system/compositions/v1/tide-and-slate/fixture-brief.json +10 -0
- package/design-system/compositions/v1/tide-and-slate/media/teaching/slate-roof-finished.webp +0 -0
- package/design-system/compositions/v1/tide-and-slate/media/teaching/slate-roof-finished.webp.provenance.json +9 -0
- package/design-system/compositions/v1/tide-and-slate/media/teaching/slate-roof-work.webp +0 -0
- package/design-system/compositions/v1/tide-and-slate/media/teaching/slate-roof-work.webp.provenance.json +9 -0
- package/design-system/compositions/v1/tide-and-slate/media-inventory.json +7 -0
- package/design-system/compositions/v1/tide-and-slate/pages/index.html +10 -0
- package/design-system/compositions/v1/tide-and-slate/pages/project.html +10 -0
- package/design-system/compositions/v1/tide-and-slate/site.json +1 -0
- package/design-system/compositions/v1/tide-and-slate/storyboard.md +12 -0
- package/design-system/compositions/v1/tide-and-slate/theme/defaults.json +1 -0
- package/design-system/compositions/v2/catalog.json +4018 -0
- package/design-system/compositions/v2/clearwell-directory/components/study-clearwell-directory/styles.css +3 -0
- package/design-system/compositions/v2/clearwell-directory/components/study-clearwell-directory/template.html +1 -0
- package/design-system/compositions/v2/clearwell-directory/pages/detail/index.html +5 -0
- package/design-system/compositions/v2/clearwell-directory/pages/index.html +5 -0
- package/design-system/compositions/v2/clearwell-directory/site.json +7 -0
- package/design-system/compositions/v2/clearwell-directory/study.json +244 -0
- package/design-system/compositions/v2/clearwell-directory/theme/defaults.json +16 -0
- package/design-system/compositions/v2/clearwell-letter/components/study-clearwell-letter/styles.css +2 -0
- package/design-system/compositions/v2/clearwell-letter/components/study-clearwell-letter/template.html +1 -0
- package/design-system/compositions/v2/clearwell-letter/pages/detail/index.html +5 -0
- package/design-system/compositions/v2/clearwell-letter/pages/index.html +5 -0
- package/design-system/compositions/v2/clearwell-letter/site.json +7 -0
- package/design-system/compositions/v2/clearwell-letter/study.json +236 -0
- package/design-system/compositions/v2/clearwell-letter/theme/defaults.json +16 -0
- package/design-system/compositions/v2/dock-radio/components/study-dock-radio/styles.css +2 -0
- package/design-system/compositions/v2/dock-radio/components/study-dock-radio/template.html +1 -0
- package/design-system/compositions/v2/dock-radio/media/teaching/original-tone-study.wav +0 -0
- package/design-system/compositions/v2/dock-radio/media/teaching/original-tone-study.wav.provenance.json +6 -0
- package/design-system/compositions/v2/dock-radio/pages/detail/index.html +5 -0
- package/design-system/compositions/v2/dock-radio/pages/index.html +5 -0
- package/design-system/compositions/v2/dock-radio/site.json +7 -0
- package/design-system/compositions/v2/dock-radio/study.json +288 -0
- package/design-system/compositions/v2/dock-radio/theme/defaults.json +16 -0
- package/design-system/compositions/v2/fen-repair/components/study-fen-repair/styles.css +2 -0
- package/design-system/compositions/v2/fen-repair/components/study-fen-repair/template.html +1 -0
- package/design-system/compositions/v2/fen-repair/media/teaching/slate-roof-finished.webp +0 -0
- package/design-system/compositions/v2/fen-repair/media/teaching/slate-roof-finished.webp.provenance.json +9 -0
- package/design-system/compositions/v2/fen-repair/media/teaching/slate-roof-work.webp +0 -0
- package/design-system/compositions/v2/fen-repair/media/teaching/slate-roof-work.webp.provenance.json +9 -0
- package/design-system/compositions/v2/fen-repair/pages/detail/index.html +5 -0
- package/design-system/compositions/v2/fen-repair/pages/index.html +5 -0
- package/design-system/compositions/v2/fen-repair/site.json +7 -0
- package/design-system/compositions/v2/fen-repair/study.json +236 -0
- package/design-system/compositions/v2/fen-repair/theme/defaults.json +16 -0
- package/design-system/compositions/v2/hearth-plane/components/study-hearth-plane/styles.css +2 -0
- package/design-system/compositions/v2/hearth-plane/components/study-hearth-plane/template.html +1 -0
- package/design-system/compositions/v2/hearth-plane/pages/detail/index.html +5 -0
- package/design-system/compositions/v2/hearth-plane/pages/index.html +5 -0
- package/design-system/compositions/v2/hearth-plane/site.json +7 -0
- package/design-system/compositions/v2/hearth-plane/study.json +238 -0
- package/design-system/compositions/v2/hearth-plane/theme/defaults.json +16 -0
- package/design-system/compositions/v2/lacuna-objects/components/study-lacuna-objects/styles.css +2 -0
- package/design-system/compositions/v2/lacuna-objects/components/study-lacuna-objects/template.html +1 -0
- package/design-system/compositions/v2/lacuna-objects/pages/detail/index.html +5 -0
- package/design-system/compositions/v2/lacuna-objects/pages/index.html +5 -0
- package/design-system/compositions/v2/lacuna-objects/site.json +7 -0
- package/design-system/compositions/v2/lacuna-objects/study.json +242 -0
- package/design-system/compositions/v2/lacuna-objects/theme/defaults.json +16 -0
- package/design-system/compositions/v2/loop-room/components/study-loop-room/styles.css +2 -0
- package/design-system/compositions/v2/loop-room/components/study-loop-room/template.html +1 -0
- package/design-system/compositions/v2/loop-room/pages/detail/index.html +5 -0
- package/design-system/compositions/v2/loop-room/pages/index.html +5 -0
- package/design-system/compositions/v2/loop-room/site.json +7 -0
- package/design-system/compositions/v2/loop-room/study.json +253 -0
- package/design-system/compositions/v2/loop-room/theme/defaults.json +16 -0
- package/design-system/compositions/v2/manifest.json +740 -0
- package/design-system/compositions/v2/mara-reading-room/components/study-mara-reading-room/styles.css +2 -0
- package/design-system/compositions/v2/mara-reading-room/components/study-mara-reading-room/template.html +1 -0
- package/design-system/compositions/v2/mara-reading-room/pages/detail/index.html +5 -0
- package/design-system/compositions/v2/mara-reading-room/pages/index.html +5 -0
- package/design-system/compositions/v2/mara-reading-room/site.json +7 -0
- package/design-system/compositions/v2/mara-reading-room/study.json +246 -0
- package/design-system/compositions/v2/mara-reading-room/theme/defaults.json +16 -0
- package/design-system/compositions/v2/mara-specimen/components/study-mara-specimen/styles.css +3 -0
- package/design-system/compositions/v2/mara-specimen/components/study-mara-specimen/template.html +1 -0
- package/design-system/compositions/v2/mara-specimen/pages/detail/index.html +5 -0
- package/design-system/compositions/v2/mara-specimen/pages/index.html +5 -0
- package/design-system/compositions/v2/mara-specimen/site.json +7 -0
- package/design-system/compositions/v2/mara-specimen/study.json +244 -0
- package/design-system/compositions/v2/mara-specimen/theme/defaults.json +16 -0
- package/design-system/compositions/v2/margin-journal/components/study-margin-journal/styles.css +2 -0
- package/design-system/compositions/v2/margin-journal/components/study-margin-journal/template.html +1 -0
- package/design-system/compositions/v2/margin-journal/pages/detail/index.html +5 -0
- package/design-system/compositions/v2/margin-journal/pages/index.html +5 -0
- package/design-system/compositions/v2/margin-journal/site.json +7 -0
- package/design-system/compositions/v2/margin-journal/study.json +242 -0
- package/design-system/compositions/v2/margin-journal/theme/defaults.json +16 -0
- package/design-system/compositions/v2/night-orchard/components/study-night-orchard/styles.css +2 -0
- package/design-system/compositions/v2/night-orchard/components/study-night-orchard/template.html +1 -0
- package/design-system/compositions/v2/night-orchard/pages/detail/index.html +5 -0
- package/design-system/compositions/v2/night-orchard/pages/index.html +5 -0
- package/design-system/compositions/v2/night-orchard/site.json +7 -0
- package/design-system/compositions/v2/night-orchard/study.json +247 -0
- package/design-system/compositions/v2/night-orchard/theme/defaults.json +16 -0
- package/design-system/compositions/v2/previews/clearwell-directory-home-1440.png +0 -0
- package/design-system/compositions/v2/previews/clearwell-directory-home-390.png +0 -0
- package/design-system/compositions/v2/previews/clearwell-directory-interior-1440.png +0 -0
- package/design-system/compositions/v2/previews/clearwell-directory-interior-390.png +0 -0
- package/design-system/compositions/v2/previews/clearwell-letter-home-1440.png +0 -0
- package/design-system/compositions/v2/previews/clearwell-letter-home-390.png +0 -0
- package/design-system/compositions/v2/previews/clearwell-letter-interior-1440.png +0 -0
- package/design-system/compositions/v2/previews/clearwell-letter-interior-390.png +0 -0
- package/design-system/compositions/v2/previews/dock-radio-home-1440.png +0 -0
- package/design-system/compositions/v2/previews/dock-radio-home-390.png +0 -0
- package/design-system/compositions/v2/previews/dock-radio-interior-1440.png +0 -0
- package/design-system/compositions/v2/previews/dock-radio-interior-390.png +0 -0
- package/design-system/compositions/v2/previews/fen-repair-home-1440.png +0 -0
- package/design-system/compositions/v2/previews/fen-repair-home-390.png +0 -0
- package/design-system/compositions/v2/previews/fen-repair-interior-1440.png +0 -0
- package/design-system/compositions/v2/previews/fen-repair-interior-390.png +0 -0
- package/design-system/compositions/v2/previews/hearth-plane-home-1440.png +0 -0
- package/design-system/compositions/v2/previews/hearth-plane-home-390.png +0 -0
- package/design-system/compositions/v2/previews/hearth-plane-interior-1440.png +0 -0
- package/design-system/compositions/v2/previews/hearth-plane-interior-390.png +0 -0
- package/design-system/compositions/v2/previews/lacuna-objects-home-1440.png +0 -0
- package/design-system/compositions/v2/previews/lacuna-objects-home-390.png +0 -0
- package/design-system/compositions/v2/previews/lacuna-objects-interior-1440.png +0 -0
- package/design-system/compositions/v2/previews/lacuna-objects-interior-390.png +0 -0
- package/design-system/compositions/v2/previews/loop-room-home-1440.png +0 -0
- package/design-system/compositions/v2/previews/loop-room-home-390.png +0 -0
- package/design-system/compositions/v2/previews/loop-room-interior-1440.png +0 -0
- package/design-system/compositions/v2/previews/loop-room-interior-390.png +0 -0
- package/design-system/compositions/v2/previews/mara-reading-room-home-1440.png +0 -0
- package/design-system/compositions/v2/previews/mara-reading-room-home-390.png +0 -0
- package/design-system/compositions/v2/previews/mara-reading-room-interior-1440.png +0 -0
- package/design-system/compositions/v2/previews/mara-reading-room-interior-390.png +0 -0
- package/design-system/compositions/v2/previews/mara-specimen-home-1440.png +0 -0
- package/design-system/compositions/v2/previews/mara-specimen-home-390.png +0 -0
- package/design-system/compositions/v2/previews/mara-specimen-interior-1440.png +0 -0
- package/design-system/compositions/v2/previews/mara-specimen-interior-390.png +0 -0
- package/design-system/compositions/v2/previews/margin-journal-home-1440.png +0 -0
- package/design-system/compositions/v2/previews/margin-journal-home-390.png +0 -0
- package/design-system/compositions/v2/previews/margin-journal-interior-1440.png +0 -0
- package/design-system/compositions/v2/previews/margin-journal-interior-390.png +0 -0
- package/design-system/compositions/v2/previews/night-orchard-home-1440.png +0 -0
- package/design-system/compositions/v2/previews/night-orchard-home-390.png +0 -0
- package/design-system/compositions/v2/previews/night-orchard-interior-1440.png +0 -0
- package/design-system/compositions/v2/previews/night-orchard-interior-390.png +0 -0
- package/design-system/compositions/v2/previews/relay-workflow-home-1440.png +0 -0
- package/design-system/compositions/v2/previews/relay-workflow-home-390.png +0 -0
- package/design-system/compositions/v2/previews/relay-workflow-interior-1440.png +0 -0
- package/design-system/compositions/v2/previews/relay-workflow-interior-390.png +0 -0
- package/design-system/compositions/v2/previews/rivet-components-home-1440.png +0 -0
- package/design-system/compositions/v2/previews/rivet-components-home-390.png +0 -0
- package/design-system/compositions/v2/previews/rivet-components-interior-1440.png +0 -0
- package/design-system/compositions/v2/previews/rivet-components-interior-390.png +0 -0
- package/design-system/compositions/v2/previews/signal-fair-home-1440.png +0 -0
- package/design-system/compositions/v2/previews/signal-fair-home-390.png +0 -0
- package/design-system/compositions/v2/previews/signal-fair-interior-1440.png +0 -0
- package/design-system/compositions/v2/previews/signal-fair-interior-390.png +0 -0
- package/design-system/compositions/v2/previews/sundial-goods-home-1440.png +0 -0
- package/design-system/compositions/v2/previews/sundial-goods-home-390.png +0 -0
- package/design-system/compositions/v2/previews/sundial-goods-interior-1440.png +0 -0
- package/design-system/compositions/v2/previews/sundial-goods-interior-390.png +0 -0
- package/design-system/compositions/v2/previews/thread-mender-home-1440.png +0 -0
- package/design-system/compositions/v2/previews/thread-mender-home-390.png +0 -0
- package/design-system/compositions/v2/previews/thread-mender-interior-1440.png +0 -0
- package/design-system/compositions/v2/previews/thread-mender-interior-390.png +0 -0
- package/design-system/compositions/v2/relay-workflow/components/study-relay-workflow/styles.css +2 -0
- package/design-system/compositions/v2/relay-workflow/components/study-relay-workflow/template.html +1 -0
- package/design-system/compositions/v2/relay-workflow/pages/detail/index.html +5 -0
- package/design-system/compositions/v2/relay-workflow/pages/index.html +5 -0
- package/design-system/compositions/v2/relay-workflow/site.json +7 -0
- package/design-system/compositions/v2/relay-workflow/study.json +283 -0
- package/design-system/compositions/v2/relay-workflow/theme/defaults.json +16 -0
- package/design-system/compositions/v2/rivet-components/components/study-rivet-components/styles.css +2 -0
- package/design-system/compositions/v2/rivet-components/components/study-rivet-components/template.html +1 -0
- package/design-system/compositions/v2/rivet-components/pages/detail/index.html +5 -0
- package/design-system/compositions/v2/rivet-components/pages/index.html +5 -0
- package/design-system/compositions/v2/rivet-components/site.json +7 -0
- package/design-system/compositions/v2/rivet-components/study.json +241 -0
- package/design-system/compositions/v2/rivet-components/theme/defaults.json +16 -0
- package/design-system/compositions/v2/signal-fair/components/study-signal-fair/styles.css +2 -0
- package/design-system/compositions/v2/signal-fair/components/study-signal-fair/template.html +1 -0
- package/design-system/compositions/v2/signal-fair/pages/detail/index.html +5 -0
- package/design-system/compositions/v2/signal-fair/pages/index.html +5 -0
- package/design-system/compositions/v2/signal-fair/site.json +7 -0
- package/design-system/compositions/v2/signal-fair/study.json +271 -0
- package/design-system/compositions/v2/signal-fair/theme/defaults.json +16 -0
- package/design-system/compositions/v2/sundial-goods/components/study-sundial-goods/styles.css +2 -0
- package/design-system/compositions/v2/sundial-goods/components/study-sundial-goods/template.html +1 -0
- package/design-system/compositions/v2/sundial-goods/pages/detail/index.html +5 -0
- package/design-system/compositions/v2/sundial-goods/pages/index.html +5 -0
- package/design-system/compositions/v2/sundial-goods/site.json +7 -0
- package/design-system/compositions/v2/sundial-goods/study.json +247 -0
- package/design-system/compositions/v2/sundial-goods/theme/defaults.json +16 -0
- package/design-system/compositions/v2/thread-mender/components/study-thread-mender/styles.css +2 -0
- package/design-system/compositions/v2/thread-mender/components/study-thread-mender/template.html +1 -0
- package/design-system/compositions/v2/thread-mender/pages/detail/index.html +5 -0
- package/design-system/compositions/v2/thread-mender/pages/index.html +5 -0
- package/design-system/compositions/v2/thread-mender/site.json +7 -0
- package/design-system/compositions/v2/thread-mender/study.json +253 -0
- package/design-system/compositions/v2/thread-mender/theme/defaults.json +16 -0
- package/design-system/knowledge/v1/README.md +8 -0
- package/design-system/knowledge/v1/catalog.json +479 -0
- package/design-system/knowledge/v1/demonstrations/assets/teaching-slate-slope.png +0 -0
- package/design-system/knowledge/v1/demonstrations/assets/teaching-slate-slope.provenance.json +12 -0
- package/design-system/knowledge/v1/demonstrations/mobile-strong.html +50 -0
- package/design-system/knowledge/v1/demonstrations/mobile-weak.html +50 -0
- package/design-system/knowledge/v1/demonstrations/project-strong.html +50 -0
- package/design-system/knowledge/v1/demonstrations/project-weak.html +50 -0
- package/design-system/knowledge/v1/demonstrations/repeat-strong.html +50 -0
- package/design-system/knowledge/v1/demonstrations/repeat-weak.html +50 -0
- package/design-system/knowledge/v1/demonstrations/services-strong.html +50 -0
- package/design-system/knowledge/v1/demonstrations/services-weak.html +50 -0
- package/design-system/knowledge/v1/demonstrations/sparse-strong.html +50 -0
- package/design-system/knowledge/v1/demonstrations/sparse-weak.html +50 -0
- package/design-system/knowledge/v1/demonstrations/type-strong.html +50 -0
- package/design-system/knowledge/v1/demonstrations/type-weak.html +50 -0
- package/design-system/knowledge/v1/manifest.json +88 -0
- package/design-system/knowledge/v1/observations/mobile-strong-1080.png +0 -0
- package/design-system/knowledge/v1/observations/mobile-strong-375.png +0 -0
- package/design-system/knowledge/v1/observations/mobile-weak-1080.png +0 -0
- package/design-system/knowledge/v1/observations/mobile-weak-375.png +0 -0
- package/design-system/knowledge/v1/observations/project-strong-1080.png +0 -0
- package/design-system/knowledge/v1/observations/project-strong-375.png +0 -0
- package/design-system/knowledge/v1/observations/project-weak-1080.png +0 -0
- package/design-system/knowledge/v1/observations/project-weak-375.png +0 -0
- package/design-system/knowledge/v1/observations/type-strong-1080.png +0 -0
- package/design-system/knowledge/v1/observations/type-strong-375.png +0 -0
- package/design-system/knowledge/v1/observations/type-weak-1080.png +0 -0
- package/design-system/knowledge/v1/observations/type-weak-375.png +0 -0
- package/design-system/knowledge/v2/added-lessons.json +30 -0
- package/design-system/knowledge/v2/assets.json +14 -0
- package/design-system/knowledge/v2/fixtures/contact-alternate.html +17 -0
- package/design-system/knowledge/v2/fixtures/contact-broken.html +15 -0
- package/design-system/knowledge/v2/fixtures/contact-valid.html +20 -0
- package/design-system/knowledge/v2/fixtures/contrast-cases.html +10 -0
- package/design-system/knowledge/v2/island-audit.json +12 -0
- package/design-system/knowledge/v2/lesson-extensions.json +158 -0
- package/design-system/knowledge/v2/manifest.json +52 -0
- package/design-system/knowledge/v2/replacements.json +14 -0
- package/design-system/knowledge/v2/requirements.json +345 -0
- package/design-system/knowledge/v2/sources.json +182 -0
- package/design-system/knowledge/v3/catalog.json +1232 -0
- package/design-system/knowledge/v3/examples/catalog.json +799 -0
- package/design-system/knowledge/v3/lessons/cmp-collection-structure.md +17 -0
- package/design-system/knowledge/v3/lessons/cmp-comparison.md +17 -0
- package/design-system/knowledge/v3/lessons/cmp-contextual-action.md +17 -0
- package/design-system/knowledge/v3/lessons/cmp-contrastive-critique.md +17 -0
- package/design-system/knowledge/v3/lessons/cmp-disclosure.md +17 -0
- package/design-system/knowledge/v3/lessons/cmp-evidence-form.md +17 -0
- package/design-system/knowledge/v3/lessons/cmp-image-art-direction.md +17 -0
- package/design-system/knowledge/v3/lessons/cmp-image-sequence.md +17 -0
- package/design-system/knowledge/v3/lessons/cmp-interactive-explanation.md +17 -0
- package/design-system/knowledge/v3/lessons/cmp-local-information.md +17 -0
- package/design-system/knowledge/v3/lessons/cmp-motion-continuity.md +17 -0
- package/design-system/knowledge/v3/lessons/cmp-narrative-continuity.md +17 -0
- package/design-system/knowledge/v3/lessons/cmp-navigation.md +17 -0
- package/design-system/knowledge/v3/lessons/cmp-page-rhythm.md +17 -0
- package/design-system/knowledge/v3/lessons/cmp-process.md +17 -0
- package/design-system/knowledge/v3/lessons/cmp-proof-adjacency.md +17 -0
- package/design-system/knowledge/v3/lessons/cmp-responsive-recomposition.md +17 -0
- package/design-system/knowledge/v3/lessons/cmp-semantic-grouping.md +17 -0
- package/design-system/knowledge/v3/lessons/cmp-shared-alignment.md +17 -0
- package/design-system/knowledge/v3/lessons/cmp-sparse-media.md +17 -0
- package/design-system/knowledge/v3/lessons/cmp-surfaces-motifs.md +17 -0
- package/design-system/knowledge/v3/lessons/cmp-text-shape.md +17 -0
- package/design-system/knowledge/v3/lessons/cmp-type-roles.md +17 -0
- package/design-system/knowledge/v3/lessons/cmp-unequal-emphasis.md +17 -0
- package/design-system/knowledge/v3/manifest.json +117 -0
- package/design-system/knowledge/v3/sources.json +425 -0
- package/design-system/references/v1/README.md +27 -0
- package/design-system/references/v1/catalog.json +20035 -0
- package/design-system/references/v1/manifest.json +10 -0
- package/design-system/references/v2/README.md +27 -0
- package/design-system/references/v2/catalog.json +27382 -0
- package/design-system/references/v2/manifest.json +11 -0
- package/design-system/references/v3/README.md +27 -0
- package/design-system/references/v3/catalog.json +27628 -0
- package/design-system/references/v3/manifest.json +11 -0
- package/docs/CLI.md +299 -0
- package/docs/CLOUDFLARE.md +53 -0
- package/docs/CONTACT-FORMS.md +161 -0
- package/docs/DISTRIBUTION.md +70 -0
- package/docs/ENGINE.md +28 -0
- package/docs/PRESERVE.md +59 -0
- package/docs/SECURITY.md +23 -0
- package/docs/STOCK-MEDIA.md +66 -0
- package/licenses/blake3-wasm-LICENSE +21 -0
- package/licenses/entities-LICENSE +11 -0
- package/licenses/parse5-LICENSE +19 -0
- package/migrations/0001_init.sql +90 -0
- package/migrations/0002_analytics.sql +50 -0
- package/migrations/0003_site_updates.sql +29 -0
- package/migrations/0004_contact_forms.sql +75 -0
- package/migrations/0005_auth.sql +20 -0
- package/package.json +229 -6
- package/src/runtime/beacon.ts +329 -0
- package/src/runtime/before-after.ts +48 -0
- package/src/runtime/carousel.ts +20 -0
- package/src/runtime/cookie-compliance.ts +50 -0
- package/src/runtime/counter.ts +2 -0
- package/src/runtime/editor.ts +72 -0
- package/src/runtime/experience.ts +57 -0
- package/src/runtime/header.ts +46 -0
- package/src/runtime/leads.ts +102 -0
- package/src/runtime/lightbox.ts +26 -0
- package/src/runtime/reveal.ts +2 -0
- package/src/runtime/scroll-motion.controller.js +100 -0
- package/src/runtime/scroll-motion.count.js +21 -0
- package/src/runtime/scroll-motion.generated.ts +5 -0
- package/src/runtime/scroll-motion.vanilla.js +45 -0
- package/src/runtime/tabs.ts +40 -0
- package/src/stock/catalog.json +5445 -0
- package/src/stock/coverage.json +18 -0
- package/src/stock/picker.css +118 -0
- package/src/stock/picker.js +191 -0
- package/templates/site/.env.example +6 -0
- package/templates/site/.github/workflows/deploy.yml +59 -0
- package/templates/site/AGENTS.md +35 -0
- package/templates/site/CLAUDE.md +5 -0
- package/templates/site/GEMINI.md +5 -0
- package/templates/site/README.md +55 -0
- package/templates/site/components/README.md +18 -0
- package/templates/site/gitignore +10 -0
- package/templates/site/launch.json +14 -0
- package/templates/site/package.json +36 -0
- package/templates/site/pages/README.md +31 -0
- package/templates/site/site.json +10 -0
- package/templates/site/theme/defaults.json +17 -0
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
// src/agent/theme-picker-styles.ts
|
|
2
|
+
var PICKER_STYLES = String.raw`
|
|
3
|
+
*{box-sizing:border-box}[hidden]{display:none!important}:root{color-scheme:light;--ink:#242832;--muted:#626773;--line:#dadddf;--paper:#fff;--ground:#f3f4f6;--blue:#294dd5}body{margin:0;background:var(--ground);color:var(--ink);font:14px/1.5 Inter,Arial,sans-serif}button,input,textarea,select{font:inherit;color:inherit}button,a,summary{touch-action:manipulation}button,select,input[type=search],.file{min-height:44px}button{cursor:pointer;border:1px solid var(--line);border-radius:8px;background:white;padding:9px 13px}button:hover{background:#eceff9;border-color:#b7bfda}button:disabled{opacity:.5;cursor:default}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,.preview:focus-visible,.file:focus-within{outline:3px solid var(--blue);outline-offset:3px}a{color:inherit}.primary{background:var(--ink);color:white;border-color:var(--ink)}.primary:hover{background:#394153}.small{font-size:12px;color:var(--muted)}h1,h2,h3,p{margin:0}h1{font-size:clamp(25px,3vw,36px);font-weight:600;line-height:1.2;letter-spacing:-.04em}h2{font-size:22px;letter-spacing:-.025em}h3{font-size:20px;letter-spacing:-.02em}.topbar{height:54px;border-bottom:1px solid var(--line);padding:0 28px;display:flex;align-items:center;justify-content:space-between;background:white}.wordmark{font-size:12px;font-weight:700;letter-spacing:.14em}.wrap{max-width:1580px;margin:auto;padding:24px 28px}.intro{display:flex;align-items:center;justify-content:space-between;gap:22px;margin-bottom:16px}.intro p{max-width:500px;color:var(--muted);font-size:13px}.brandbar{display:flex;align-items:center;gap:12px;background:white;border:1px solid var(--line);border-radius:10px;padding:10px 14px;min-height:66px;margin-bottom:18px}.brandbar img{max-width:140px;max-height:36px;object-fit:contain}.brandbar strong{font-size:13px;overflow-wrap:anywhere;min-width:0}.palette{display:flex;gap:5px}.palette span{width:16px;height:16px;border:1px solid #9297a2;border-radius:50%}.brandcontrols{margin-left:auto;display:flex;gap:8px;align-items:center;flex-wrap:wrap}.brandcontrols select{max-width:200px}.brandbar select,.controls select,.controls input{background:white;border:1px solid var(--line);border-radius:7px;padding:9px 11px;min-width:0}.gallery-layout{display:grid;grid-template-columns:210px minmax(0,1fr);gap:24px;align-items:start}.filters{position:sticky;top:16px;max-height:calc(100dvh - 32px);overflow:auto;padding-right:12px;scrollbar-width:thin}.filters h2{font-size:15px;margin:0 0 14px}.filters fieldset{border:0;padding:0;margin:0 0 20px;min-width:0}.filters legend{font-size:11px;letter-spacing:.08em;text-transform:uppercase;font-weight:700;margin-bottom:7px}.filters label{min-height:44px;display:flex;align-items:flex-start;gap:8px;padding:6px 0;font-size:12px;cursor:pointer}.filters input{accent-color:var(--blue);width:16px;height:16px;flex:none;margin:2px 0 0}.filters small{margin-left:auto;color:var(--muted)}.filters .family-description{font-size:11px;color:var(--muted);margin:6px 0 12px}.filters .clear{width:100%}.filtersclose,#filterbutton,.filterbackdrop{display:none}.collection-entry{display:flex;gap:6px;margin-bottom:12px}.collection-entry button{font-size:12px}.collection-entry [aria-pressed=true]{background:var(--ink);color:white}.cardfoot .affinities{font-size:10px;min-height:0;margin-bottom:12px;color:#555b69}.controls{display:flex;gap:10px;flex-wrap:wrap;align-items:end;margin-bottom:14px}.controls label{display:flex;flex-direction:column;gap:4px;font-size:11px;color:var(--muted)}.controls .searchlabel{flex:1 1 220px}.controls input{width:100%}.controls select{max-width:190px}.resultbar{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;font-size:12px;color:var(--muted)}.resultbar button{min-height:32px;padding:5px 8px;font-size:12px}.group{margin-bottom:28px}.group>h2{font-size:17px;margin:8px 0 14px}.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px}.card{background:white;border:1px solid var(--line);border-radius:12px;overflow:hidden;min-width:0;box-shadow:0 3px 12px #24283205}.card[data-selected=true]{outline:3px solid var(--blue);outline-offset:3px}.cardhead{padding:16px 18px 12px;display:flex;align-items:start;justify-content:space-between;gap:10px}.cardhead .small{font-size:10px;margin-bottom:3px}.save{min-width:44px;padding:8px;font-size:19px}.save[aria-pressed=true]{background:#edf0ff;color:#2444c8}.previewtools{display:flex;justify-content:space-between;align-items:center;gap:6px;padding:5px 12px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);font-size:10px;color:var(--muted);background:#fafbfc}.exitpreview{font-size:11px;padding:4px 8px;min-height:44px}.preview{height:440px;position:relative;background:#e4e7ec;overflow:hidden;isolation:isolate}.preview iframe,.canvas iframe{position:absolute;top:0;border:0;background:white;transform-origin:0 0}.preview.inactive iframe{pointer-events:none}.preview.inactive:after{content:'Tap Scroll preview to explore';position:absolute;inset:auto 15px 15px;background:var(--ink);color:white;padding:10px;text-align:center;pointer-events:none;border-radius:6px;font-size:12px}.loadstate{position:absolute;inset:0;z-index:2;display:flex;align-items:center;justify-content:center;gap:12px;padding:20px;background:#e4e7ec;color:var(--ink);font-size:13px;flex-wrap:wrap}.loadstate.error{background:#fff2e8}.loadstate p{width:100%;text-align:center}.placeholder{padding:25px;color:var(--muted);font-size:12px}.cardfoot{padding:14px 18px 17px}.cardfoot p{font-size:12px;color:var(--muted);margin-bottom:12px;min-height:36px}.actions{display:flex;gap:8px;flex-wrap:wrap}.actions button{font-size:12px}.comparepick{min-height:44px;margin-left:auto;display:flex;align-items:center;gap:6px;font-size:11px}.empty{background:white;border:1px dashed #a7aebb;border-radius:12px;padding:42px;text-align:center}.empty p{margin:10px 0 18px;color:var(--muted)}.draft{margin:32px 0 0 234px;background:white;border:1px solid var(--line);border-radius:12px;padding:24px;max-width:900px}.draft h2{margin-bottom:10px}.draft label{display:block;margin:18px 0 7px;font-size:13px;font-weight:600}textarea{width:100%;min-height:110px;padding:12px;border:1px solid #a8aebb;border-radius:8px;resize:vertical}.submitrow{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:16px 0 10px}.status{min-height:24px;font-size:13px;color:#294637}.portable{border-top:1px solid var(--line);margin-top:18px;padding-top:10px}.portable summary{cursor:pointer;padding:10px 0;min-height:44px;font-size:12px}.file{position:relative;display:inline-flex;align-items:center;border:1px solid var(--line);border-radius:8px;padding:9px 13px;margin:0!important;font-weight:400!important;font-size:12px}.file input{position:absolute;inset:0;opacity:0;width:100%}#copytext{margin-top:12px;font:12px monospace}footer{padding:24px 0 90px;font-size:11px;color:var(--muted)}.skip{position:absolute;top:-80px;left:15px;background:white;padding:12px;z-index:20}.skip:focus{top:12px}.shortlist{position:fixed;bottom:14px;left:50%;transform:translateX(-50%);width:min(1050px,calc(100% - 28px));background:#242832f5;color:white;box-shadow:0 6px 32px #1116;z-index:4;border-radius:12px;padding:10px 14px;display:flex;align-items:center;gap:12px}.shortlist .names{flex:1;display:flex;gap:5px;flex-wrap:wrap;font-size:11px}.shortlist button{font-size:12px;min-height:38px}.shortlist .names button{min-height:44px;background:#ffffff15;color:white;border-color:#ffffff35;padding:4px 7px;min-height:44px}.shortlist .small{color:#cbd0dc}.notice{font-size:12px;color:#a02d20;min-height:18px}dialog{border:1px solid #cbd0dc;border-radius:12px;padding:0;width:min(1510px,96vw);height:94dvh;max-height:94dvh;background:var(--ground);color:var(--ink);overflow:hidden}dialog[open]{display:grid;grid-template-rows:auto minmax(0,1fr) auto}dialog::backdrop{background:#161e30bb}.detailtop{padding:12px 16px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:9px;flex-wrap:wrap;background:white}.detailtop h2{font-size:20px;margin-right:auto}.toggles{display:flex;gap:3px}.toggles button{padding:7px 10px;font-size:12px}.toggles button[aria-pressed=true]{background:var(--ink);color:white}.detailtop a{font-size:12px}.detailbody{display:grid;grid-template-columns:minmax(0,1fr) 250px;min-height:0}.canvas{min-height:0;width:100%;position:relative;overflow:hidden;background:#e4e7ec}.guidance{overflow:auto;padding:20px;background:white;border-left:1px solid var(--line);font-size:12px}.guidance h3{font-size:14px;margin:0 0 8px}.guidance p{margin:0 0 20px;color:var(--muted)}.detailbottom{padding:10px 16px;background:white;border-top:1px solid var(--line);display:flex;align-items:center;gap:14px;font-size:12px}.detailbottom .small{margin-left:auto}#saved{margin-top:12px}select{max-width:100%}.comparebody{padding:14px;overflow:auto;min-height:0}.comparecolumns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.comparecolumn{min-width:0;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:white}.comparecolumn h3{font-size:17px;padding:12px}.comparecolumn .canvas{height:52dvh;min-height:280px}.comparecolumn dl{display:grid;grid-template-columns:85px 1fr;gap:8px;padding:14px;margin:0;font-size:11px}.comparecolumn dt{font-weight:600}.comparecolumn dd{margin:0;color:var(--muted)}.comparecolumn .jump{padding:7px 12px;display:flex;gap:5px;border-bottom:1px solid var(--line)}.jump button{min-height:44px;padding:4px 9px;font-size:11px}.comparecandidate{padding:6px 14px;font-size:12px;background:#fff;border-top:1px solid var(--line);display:flex;gap:10px;align-items:center}.comparecandidate select{padding:8px;border:1px solid var(--line);border-radius:7px}.comparetabs{display:none}.family-samples{display:flex;gap:4px;margin:5px 0 10px}.family-samples img{width:54px;height:42px;object-fit:cover;object-position:top;border:1px solid var(--line);border-radius:3px}
|
|
4
|
+
@media(max-width:1320px){.gallery-layout{grid-template-columns:1fr}.filters{display:none;position:fixed;z-index:12;inset:0 auto 0 0;width:min(330px,90vw);max-height:100dvh;background:white;padding:24px;box-shadow:0 0 40px #1114}.filters.open{display:block}.filterbackdrop.open{display:block;position:fixed;inset:0;background:#161e3066;z-index:11;border:0;border-radius:0}.filtersclose,#filterbutton{display:block}.filtersclose{float:right}.draft{margin-left:0}.preview{height:460px}}
|
|
5
|
+
@media(max-width:900px){.detailbody{grid-template-columns:minmax(0,1fr)}.guidance{display:none}.intro{align-items:start;flex-direction:column;gap:8px}.intro p{max-width:100%}.brandbar{flex-wrap:wrap}.brandcontrols{margin-left:0;flex:1 1 100%}.comparecolumns{grid-template-columns:1fr}.comparecolumn[data-visible=false]{display:none}.comparetabs{display:flex;gap:5px}.comparecandidate{flex-wrap:wrap}}
|
|
6
|
+
@media(max-width:768px){.topbar{padding:0 16px}.topbar .small{display:none}.wrap{padding:18px 16px}.grid{grid-template-columns:1fr;gap:18px}.controls{gap:8px}.controls label{flex:1 1 115px}.controls .searchlabel{flex-basis:100%}.controls select{max-width:100%;width:100%}.preview{height:400px}.cardfoot p{min-height:0}.brandbar img{max-width:120px}.brandbar strong{flex:1 1 100%;order:2}.brandbar .palette{margin-left:auto}.brandcontrols{order:3}.draft{padding:20px}.detailtop{padding:9px;gap:6px}.detailtop h2{font-size:18px;flex:1 1 65%}.detailtop button{font-size:11px;padding:7px 9px}.detailtop a{font-size:11px}.detailbottom{padding:9px;font-size:11px}.detailbottom .small{display:none}dialog{width:98vw;height:98dvh;max-height:98dvh}.shortlist{align-items:start;flex-wrap:wrap;gap:7px}.shortlist .names{flex-basis:70%}.shortlist strong{font-size:12px}.shortlist>.small{display:none}.comparecolumn .canvas{height:50dvh}.brandcontrols select{max-width:100%}.brandcontrols label{min-width:0;flex:1}.comparecandidate label{width:100%}}
|
|
7
|
+
.filterchips{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:15px}.filterchips button{font-size:11px;min-height:32px;padding:5px 8px;background:#e7ecfa}.filters details>summary{min-height:44px;cursor:pointer;font-size:12px;padding:10px 0}.filters details fieldset{margin-top:14px}#filterdrawer{margin:0;width:min(330px,90vw);height:100dvh;max-height:100dvh;border-radius:0;display:none}#filterdrawer[open]{display:block}#filterdrawer .filters{display:block;width:100%;position:static;max-height:100%;box-shadow:none}
|
|
8
|
+
@media(max-width:900px){.detailbody{display:block;overflow:auto}.detailbody>.canvas{height:65dvh;min-height:300px}.guidance{display:block;border-left:0;border-top:1px solid var(--line);padding:20px}.guidance p{max-width:65ch}.comparetabs{position:sticky;top:-14px;background:var(--ground);padding:8px 0;z-index:2}}
|
|
9
|
+
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;animation:none!important;transition:none!important}}
|
|
10
|
+
/* Five-page catalog: one direction per broad row, bounded live canvases. */
|
|
11
|
+
.wrap{max-width:1600px}.gallery-layout{display:block}.filters{display:none}.filtersclose,#filterbutton{display:block}.filters.open{display:block}.grid{display:flex;flex-direction:column;gap:30px}.card{display:grid;grid-template-columns:260px minmax(0,1fr);padding:24px;gap:26px;border-radius:8px;box-shadow:none}.cardmeta{min-width:0}.cardhead{padding:0;gap:8px}.cardhead h3{font-size:24px;line-height:1.15;margin:8px 0 0;letter-spacing:-.035em}.cardhead .small{font-size:10px;line-height:1.5}.cardfoot{padding:18px 0 0}.cardfoot p{font-size:13px;line-height:1.65;min-height:0;margin:10px 0 15px}.demo-business{display:block;font-size:12px;color:#373d4b}.cardfoot .affinities{font-size:11px;color:#626a78}.actions{gap:7px}.actions button{font-size:12px}.comparepick{margin-left:0;flex-basis:100%}.page-overview{min-width:0}.page-tiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.page-tile{min-width:0;border:1px solid #e2e5eb;border-radius:6px;overflow:hidden;background:#fafbfc}.thumbnail-button{display:block;padding:0;border:0;border-radius:0;width:100%;aspect-ratio:1.6;background:#eceef2;overflow:hidden;position:relative}.thumbnail-button img{width:100%;height:100%;object-fit:cover;object-position:top;display:block}.thumbnail-button:hover img{filter:brightness(.96)}.thumb-fallback{display:flex;align-items:center;justify-content:center;height:100%;padding:24px;font-size:12px;color:#626a78}.tile-caption{padding:9px 11px;display:flex;align-items:center;justify-content:space-between;gap:8px;background:white}.tile-caption strong{font-size:11px;font-weight:600;line-height:1.4;overflow-wrap:anywhere}.tile-caption button{font-size:10px;min-height:36px;padding:5px 8px;white-space:nowrap}.full-site-tile{border:1px solid #d2d8e3;border-radius:6px;background:#f1f3f7;display:flex;align-items:center;justify-content:center;text-align:center;padding:24px;color:#303847;font-size:14px;font-weight:600;min-height:160px;text-decoration:none}.full-site-tile:hover{background:#e6eaf1}.row-page-select{display:none}.card>.previewtools,.card>.preview{grid-column:1/-1}.card>.previewtools{border:1px solid var(--line);margin-bottom:-26px;border-radius:6px 6px 0 0;padding:6px 15px;font-size:12px}.card>.preview{height:590px;border:1px solid var(--line);border-top:0;border-radius:0 0 6px 6px}.card>.preview[hidden],.card>.previewtools[hidden]{display:none}.draft{margin:32px 0 0;max-width:1100px}.controls{padding:16px 0;border-bottom:1px solid var(--line)}.intro{margin-bottom:20px}.intro p{max-width:62ch}.collection-entry{margin-top:24px}.comparecolumns{grid-template-columns:repeat(auto-fit,minmax(290px,1fr))}#detailpage,#comparepage{max-width:230px}.detailtop .toggles[aria-label=Specimen]{display:none}.filters .family-samples{display:none}#filterdrawer{width:min(780px,94vw);height:auto;max-height:92dvh;margin:auto;border-radius:10px}#filterdrawer .filters{padding:24px;overflow:auto}#filterdrawer #facets{display:grid;grid-template-columns:1fr 1fr;gap:25px}#filterdrawer .filtersclose{float:right}#filterdrawer .filters>h2{margin-bottom:20px}.filters .family-description{font-size:12px}.filters label{font-size:13px}.filters legend{font-size:14px}.filters input{min-width:16px}.filters .clear{margin-top:15px;width:auto}
|
|
12
|
+
@media(max-width:1100px){.card{grid-template-columns:230px minmax(0,1fr);gap:20px;padding:20px}.page-tiles{gap:12px}.tile-caption{align-items:start;flex-direction:column}.card>.previewtools{margin-bottom:-20px}.full-site-tile{min-height:130px}}
|
|
13
|
+
@media(max-width:768px){.card{display:block;padding:18px}.cardhead h3{font-size:26px}.cardfoot{padding-top:12px}.cardmeta .actions{margin-bottom:18px}.page-tiles{display:block}.page-tile[data-visible=false]{display:none}.tile-caption{flex-direction:row;align-items:center}.tile-caption strong{font-size:12px}.tile-caption button{min-height:44px;font-size:11px}.full-site-tile{margin-top:12px;min-height:64px}.row-page-select{display:block;width:100%;margin-bottom:12px}.thumbnail-button{aspect-ratio:1.2}.thumbnail-button img{object-fit:cover;object-position:top}.card>.previewtools{margin:18px 0 0}.card>.preview{height:520px}.comparecolumns{display:block}.comparecolumn[data-visible=false]{display:none}.comparetabs{display:flex}.controls label{flex-basis:130px}#filterdrawer #facets{grid-template-columns:1fr}#detailpage,#comparepage{max-width:100%;flex:1}.detailtop{align-content:start}.detailbody>.canvas{height:68dvh}.intro h1{font-size:34px}}
|
|
14
|
+
`;
|
|
15
|
+
|
|
16
|
+
// src/agent/theme-picker-shell.ts
|
|
17
|
+
var escapeHtml = (s) => s.replace(/[&<>"']/g, (c) => ({ "&": "&", "<": "<", ">": ">", '"': """, "'": "'" })[c]);
|
|
18
|
+
function renderThemePickerShell({ fontStyles, introHtml, collectionOptions, release, scriptHtml }) {
|
|
19
|
+
const toggles = (prefix) => `<div class="toggles" aria-label="Preview viewport"><button id="${prefix}desktop">Desktop</button><button id="${prefix}mobile">Mobile</button></div><div class="toggles" aria-label="Specimen"><button id="${prefix}story">Homepage</button><button id="${prefix}guide">Service detail</button></div><select id="${prefix || "detail"}page" aria-label="Page"></select><select id="${prefix || "detail"}palette" aria-label="Preview palette"><option value="brand">Your brand</option><option value="original">Original palette</option></select>`;
|
|
20
|
+
return `<!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Vitris \u2014 visual directions</title><style>${fontStyles}${PICKER_STYLES}fieldset{min-inline-size:0;max-width:100%;box-sizing:border-box}fieldset select{width:100%;max-width:100%;min-width:0}fieldset textarea{max-width:100%;box-sizing:border-box}</style></head><body><a class="skip" href="#main">Skip to directions</a><header class="topbar"><span class="wordmark">VITRIS / DIRECTIONS</span><span class="small">A point of view for your business</span></header><main id="main" class="wrap"><div class="intro"><h1>Find your direction.</h1>${introHtml}</div><div class="brandbar"><div id="brandbar" style="display:contents"></div><div class="brandcontrols"><label><span class="small">Preview brand </span><select id="brandselect" aria-label="Preview brand"></select></label><label><span class="small">Palette </span><select id="palette"><option value="brand">Your brand</option><option value="original">Original palette</option></select></label></div></div><div class="gallery-layout"><button class="filterbackdrop" id="filterbackdrop" aria-label="Close filters" tabindex="-1"></button><aside id="filters" class="filters" aria-label="Filter directions"><button class="filtersclose" id="filtersclose">Done</button><h2>Discover</h2><div id="facets"></div><button class="clear" id="clearfilters">Clear filters</button></aside><section aria-label="Browse directions"><div class="collection-entry" aria-label="Start browsing"><button id="allentry">All directions</button><button id="localentry">Local Service Edit</button></div><div class="controls"><button id="filterbutton" aria-expanded="false" aria-controls="filters">Filters</button><label class="searchlabel">Search directions<input id="search" type="search" placeholder="Try plumber, calm, booking or no photos"></label><label>Collection<select id="collection">${collectionOptions}</select></label><label>Group by<select id="group"><option value="none">No grouping</option><option value="family">Family</option><option value="collection">Collection</option><option value="identity">Identity</option><option value="industry">Industry</option></select></label><label>Sort<select id="sort"><option value="curated">Curated order</option><option value="name">Name A\u2013Z</option><option value="new">New directions</option></select></label><label>Viewport<select id="cardviewport"><option value="desktop">Desktop</option><option value="mobile">Mobile</option></select></label><label>Archive<select id="archive"><option value="current">Current \xB7 ${escapeHtml(release)}</option><option value="2026-10-08.3">Archive \xB7 2026-10-08.3</option><option value="2026-10-08.2">Archive \xB7 2026-10-08.2</option><option value="2026-10-08.1">Archive \xB7 original eight</option></select></label></div><div class="resultbar"><span id="count" role="status" aria-live="polite"></span><button id="clearall">Reset browsing</button></div><div id="chips" class="filterchips" aria-label="Active filters"></div><div id="grid" aria-label="Visual directions"></div><div id="empty" class="empty" hidden><h2>No directions match yet.</h2><p>Try a broader phrase or clear a filter.</p><button id="emptyclear">Clear filters</button><button id="emptyquery">Clear search</button></div></section></div><section id="choice" class="draft"><h2>Your direction</h2><p id="draftlabel" class="small"></p><div id="saved"></div><label for="notes">Anything you want us to keep, change, or avoid?</label><textarea id="notes" maxlength="8000"></textarea><p class="small">Optional. Your exact words travel with your choice.</p><fieldset><legend>How should we adapt this direction?</legend><label>When your content does not fill a section<select id="adaptsections"><option value="">Choose an approach</option><option value="preserve-ask">Keep sections with fill-in prompts; ask before removing</option><option value="agent-decides">Let the agent decide which sections to keep</option></select></label><label>AI imagery<select id="adaptimages"><option value="">Choose an approach</option><option value="ask-each">Ask me about each proposed image</option><option value="no-ai">Use existing imagery and placeholders</option><option value="agent-decides">Let the agent propose and generate imagery</option></select></label><label>What should visitors feel, and which moments should stay?<textarea id="adaptpriorities" maxlength="8000" placeholder="For example: cinematic imagery, expressive transitions, project browsing and the full section rhythm"></textarea></label><p class="small">Your agent maps sections and content gaps before building, then shows the representative page for feedback.</p></fieldset><div class="submitrow"><button id="submit" class="primary" disabled>Use this direction</button><span id="mode" class="small"></span></div><p id="status" class="status" role="status" aria-live="polite"></p><details class="portable"><summary>Copy, export or import your choice</summary><p class="small">Copy or export to share with your agent. Import saves a valid choice.</p><div class="actions"><button id="copy" disabled>Copy choice for agent</button><button id="export" disabled>Export choice JSON</button><label class="file">Import and save choice<input id="import" type="file" accept="application/json" aria-label="Import and save choice JSON"></label></div><textarea id="copytext" readonly hidden aria-label="Choice JSON to copy"></textarea></details></section><footer>Visual guides leave room for your own pages, words and images. Preview actions are demonstrations. \xB7 Release ${escapeHtml(release)}</footer></main><div id="shortlist" class="shortlist" hidden><div><strong id="shortcount"></strong><div class="small">Saved for browsing</div></div><div id="shortnames" class="names"></div><button id="compareopen">Compare</button><button id="shortclear">Clear</button><span id="browsenotice" class="notice" role="status"></span></div><dialog id="filterdrawer" aria-label="Filter directions"></dialog><dialog id="detail" aria-labelledby="detailtitle"><div class="detailtop"><h2 id="detailtitle"></h2>${toggles("")}<a id="direct" target="_blank" rel="noopener">Full preview \u2197</a><button id="close" aria-label="Close direction details">Close \u2715</button></div><div class="detailbody"><div id="canvas" class="canvas"></div><aside class="guidance"><h3>What makes it different</h3><p id="principles"></p><h3>What your agent will keep</h3><p id="freedoms"></p><h3>Needs from you</h3><p id="assets"></p><h3>Works well when</h3><p id="fit"></p></aside></div><div class="detailbottom"><button id="choose" class="primary">Choose this direction</button><button id="detailsave">Save to shortlist</button><span class="small">Your website gets its own content and page architecture.</span></div></dialog><dialog id="comparison" aria-labelledby="comparetitle"><div class="detailtop"><h2 id="comparetitle">Compare directions</h2>${toggles("compare")}<button id="compareclose" aria-label="Close comparison">Close \u2715</button></div><div class="comparebody"><div id="comparetabs" class="comparetabs"></div><div id="comparecolumns" class="comparecolumns"></div></div><div class="comparecandidate"><label>Visible candidates <select id="compareleft" aria-label="First comparison direction"></select> <select id="compareright" aria-label="Second comparison direction"></select></label><span class="small">Each preview scrolls independently. Saving here does not choose a direction.</span></div></dialog>${scriptHtml}</body></html>`;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
// src/agent/theme-picker-selection-runtime.ts
|
|
24
|
+
var SELECTION_RUNTIME = String.raw`
|
|
25
|
+
function payload(){if(pending)return pending;const m=model(),t=findTheme(selected,selectedRelease);if(!t)throw Error('Choose a direction first.');if(!$('adaptsections').value||!$('adaptimages').value)throw Error('Choose how to handle content gaps and AI imagery.');return pending={schemaVersion:1,siteId:m.brand.siteId,themeId:t.id,themeRelease:t.release,themeHash:t.hash,brandContextHash:m.brandHash,notes:$('notes').value,adaptation:{version:1,sections:$('adaptsections').value,aiImages:$('adaptimages').value,priorities:$('adaptpriorities').value},source:m.test?'test-simulation':'user-ui',operationId:crypto.randomUUID(),selectedAt:new Date().toISOString(),previousSelectionHash:m.previousSelectionHash};}
|
|
26
|
+
function validate(p){const m=model(),t=findTheme(p.themeId,p.themeRelease);if(!t||p.siteId!==m.brand.siteId||p.brandContextHash!==m.brandHash||p.themeHash!==t.hash||p.schemaVersion!==1||typeof p.notes!=='string'||p.notes.length>8000)throw Error('Wrong site, unknown release/theme or stale preview. Refresh and retain your notes.');if(m.test&&p.source!=='test-simulation')throw Error('This demo accepts test choices only.');}
|
|
27
|
+
async function submit(p){validate(p);if(!session||location.origin!==session.origin){setStatus('Portable mode: export or copy the choice for your agent. Nothing has been submitted.');return;}const res=await fetch('/api/selection',{method:'POST',headers:{'Content-Type':'application/json','X-Theme-Session':session.token},body:JSON.stringify(p)}),r=await res.json();if(!res.ok)throw Error(r.error||'Save failed.');model().previousSelectionHash=r.currentSelectionHash;model().current=r.current;pending=null;$('draftlabel').textContent='Saved: '+findTheme(r.current.themeId,r.current.themeRelease).name;setStatus('Choice saved. Your agent can continue on its next workflow invocation.');}
|
|
28
|
+
$('submit').onclick=async()=>{try{$('submit').disabled=true;await submit(payload());}catch(e){setStatus(e.message+' Your draft is retained.');}finally{$('submit').disabled=!selected;}};
|
|
29
|
+
$('copy').onclick=async()=>{try{const text=JSON.stringify(payload(),null,2);$('copytext').value=text;$('copytext').hidden=false;try{await navigator.clipboard.writeText(text);setStatus('Choice copied; copying does not submit.');}catch{$('copytext').focus();$('copytext').select();setStatus('Copy the JSON below for your agent.');}}catch(e){setStatus(e.message);}};
|
|
30
|
+
$('export').onclick=()=>{try{const url=URL.createObjectURL(new Blob([JSON.stringify(payload(),null,2)],{type:'application/json'})),a=document.createElement('a');a.href=url;a.download='theme-choice-'+model().brand.siteId+'.json';a.click();setTimeout(()=>URL.revokeObjectURL(url),1000);}catch(e){setStatus(e.message);}};
|
|
31
|
+
$('import').onchange=async e=>{try{const file=e.target.files[0];if(!file)return;if(file.size>32000)throw Error('Choice file is too large.');const p=JSON.parse(await file.text());validate(p);selected=p.themeId;selectedRelease=p.themeRelease;$('notes').value=p.notes;for(const [id,key] of [['adaptsections','sections'],['adaptimages','aiImages'],['adaptpriorities','priorities']])$(id).value=p.adaptation?.[key]||'';update();stash();pending=p;await submit(p);}catch(e){setStatus(e.message);}finally{e.target.value='';}};
|
|
32
|
+
`;
|
|
33
|
+
|
|
34
|
+
// src/agent/theme-picker-runtime.ts
|
|
35
|
+
var PICKER_RUNTIME = String.raw`
|
|
36
|
+
const $=id=>document.getElementById(id),allThemes=m=>[...m.themes,...m.archiveThemes],key=t=>t.release+':'+t.id;
|
|
37
|
+
let brandIndex=0,selected=null,selectedRelease=null,pending=null,opened=null,lastFocus=null,galleryY=0,detailFrame=null;
|
|
38
|
+
let example='story',viewport='desktop',compareExample='story',compareViewport='desktop',comparePair=[],compareTab=0;
|
|
39
|
+
const cards=new Map(),frames=new Set(),positions=new Map(),demoMemory=new Map();let compareFrames=[];
|
|
40
|
+
const model=()=>models[brandIndex],draftKey=()=> 'vitris-theme-draft:'+model().brand.siteId+':'+model().brandHash,browseKey=()=> 'vitris-theme-browse:v3:'+model().themes[0].release+':'+model().brand.siteId;
|
|
41
|
+
const findTheme=(id,release)=>allThemes(model()).find(t=>t.id===id&&t.release===release),byKey=k=>allThemes(model()).find(t=>key(t)===k);
|
|
42
|
+
const defaults=()=>({collection:'All directions',families:[],identities:[],industries:[],media:[],tasks:[],query:'',group:'none',sort:'curated',archive:'current',shortlist:[],compare:[],palette:'brand',viewport:innerWidth<768?'mobile':'desktop'});
|
|
43
|
+
let browse=defaults();
|
|
44
|
+
function sanitize(input){const b={...defaults(),...input},choices={collection:vocabulary.collections,group:['none','family','collection','identity','industry'],sort:['curated','name','new'],archive:['current',...new Set(model().archiveThemes.map(t=>t.release))],palette:['brand','original'],viewport:['desktop','mobile']};for(const [k,values] of Object.entries(choices))if(!values.includes(b[k]))b[k]=defaults()[k];for(const [k,values] of Object.entries({families:Object.keys(vocabulary.families),identities:vocabulary.identities,industries:vocabulary.industries||[],media:['none','light','photo-led'],tasks:['call','quote','appointment','understand work','inspection','estimate']}))b[k]=Array.isArray(b[k])?[...new Set(b[k].filter(x=>values.includes(x)))]:[];b.query=typeof b.query==='string'?b.query.slice(0,200):'';for(const k of ['shortlist','compare'])b[k]=Array.isArray(b[k])?[...new Set(b[k].filter(x=>byKey(x)))].slice(0,k==='shortlist'?6:3):[];b.compare=b.compare.filter(k=>b.shortlist.includes(k));return b;}
|
|
45
|
+
function restoreBrowse(){let stored={};try{stored=JSON.parse(localStorage.getItem(browseKey())||'{}');}catch{}const params=new URLSearchParams(location.search);for(const k of Object.keys(defaults()))if(params.has(k))stored[k]=['families','identities','industries','media','tasks','shortlist','compare'].includes(k)?params.get(k).split('|'):params.get(k);browse=sanitize(stored);}
|
|
46
|
+
function persist(){try{localStorage.setItem(browseKey(),JSON.stringify(browse));}catch{}if(location.protocol==='http:'||location.protocol==='https:'){const params=new URLSearchParams();for(const [k,v] of Object.entries(browse)){const value=Array.isArray(v)?v.join('|'):v;if(value&&JSON.stringify(v)!==JSON.stringify(defaults()[k]))params.set(k,value);}history.replaceState(null,'',location.pathname+(params.size?'?'+params:''));}}
|
|
47
|
+
const setStatus=s=>{$('status').textContent=s;};
|
|
48
|
+
function stash(){try{localStorage.setItem(draftKey(),JSON.stringify({selected,release:selectedRelease,notes:$('notes').value,adaptation:{sections:$('adaptsections').value,aiImages:$('adaptimages').value,priorities:$('adaptpriorities').value}}));}catch{}}
|
|
49
|
+
function update(){const t=findTheme(selected,selectedRelease);$('draftlabel').textContent=t?'Draft: '+t.name+'. Submit to save.':'Choose a direction when you are ready. Nothing has been submitted.';for(const id of ['submit','copy','export'])$(id).disabled=!t;for(const c of cards.values()){const yes=c.theme.id===selected&&c.theme.release===selectedRelease;c.element.dataset.selected=String(yes);c.choose.setAttribute('aria-pressed',String(yes));c.choose.textContent=yes?'Chosen ✓':'Choose';}pending=null;}
|
|
50
|
+
function choose(id,release){selected=id;selectedRelease=release;update();stash();setStatus('Draft updated. Your choice has not been submitted.');}
|
|
51
|
+
const resourceFor=(t,ex,v)=>ex?t.resources[browse.palette]?.[ex]?.[v]:undefined;
|
|
52
|
+
function resourceUrl(resource,nonce){if(resource.html){let html=resource.html;for(const [path,data] of Object.entries(offlineAssets))html=html.replaceAll(path,data);const url=URL.createObjectURL(new Blob([html],{type:'text/html'}));return {url:url+'#bridge='+nonce+'&parent='+encodeURIComponent(location.protocol==='file:'||location.origin==='null'?'*':location.origin),blob:url};}return {url:resource.url+'#bridge='+nonce+'&parent='+encodeURIComponent(location.protocol==='file:'||location.origin==='null'?'*':location.origin)};}
|
|
53
|
+
function geometry(s){if(!s.frame)return;const rect=s.host.getBoundingClientRect(),card=s.host.classList.contains('preview'),width=s.viewport==='mobile'?390:Math.max(768,Math.floor(rect.width)),scale=Math.min(1,rect.width/width);if(!scale)return;s.frame.style.width=width+'px';s.frame.style.height=Math.max(200,rect.height/scale)+'px';s.frame.style.zoom=String(scale);s.frame.style.left=Math.floor(Math.max(0,(rect.width-width*scale)/2)/scale)+'px';}
|
|
54
|
+
function dispose(s){if(!s)return;if(s.frame)positions.set(s.resource.id,s.atEnd?Number.MAX_SAFE_INTEGER:s.y||0);clearTimeout(s.timer);s.observer?.disconnect();s.frame?.remove();if(s.blob)URL.revokeObjectURL(s.blob);frames.delete(s);}
|
|
55
|
+
function replaceState(old,fresh){if(detailFrame===old)detailFrame=fresh;for(const c of cards.values())if(c.state===old)c.state=fresh;compareFrames=compareFrames.map(s=>s===old?fresh:s);}
|
|
56
|
+
function mount(host,t,ex,v){const resource=resourceFor(t,ex,v);if(!resource){host.dataset.ready='true';host.replaceChildren();const note=document.createElement('p');note.textContent='This direction has no matching page for that role. Choose another page. A different route was not substituted.';host.append(note);return null;}const nonce=crypto.randomUUID(),frame=document.createElement('iframe'),s={host,theme:t,resource,nonce,frame,viewport:v,y:positions.get(resource.id)||0,height:0,viewHeight:0};host.dataset.ready='false';host.replaceChildren();const status=document.createElement('div');status.className='loadstate';status.setAttribute('role','status');status.textContent='Loading '+t.name+'…';host.append(status);s.status=status;frame.setAttribute('sandbox','allow-scripts allow-downloads');frame.title=t.name+' '+(t.pages.find(p=>pageKey(p)===ex)?.label||ex)+' '+v+' scrollable preview';frame.style.opacity='0';host.append(frame);frames.add(s);geometry(s);s.observer=new ResizeObserver(()=>geometry(s));s.observer.observe(host);const src=resourceUrl(resource,nonce);s.blob=src.blob;frame.src=src.url;s.fail=message=>{if(!frames.has(s)||s.ready)return;status.replaceChildren();status.className='loadstate error';const p=document.createElement('p');p.textContent=message;const retry=document.createElement('button');retry.textContent='Retry preview';retry.onclick=()=>{dispose(s);replaceState(s,mount(host,t,ex,v));};const direct=document.createElement('a');direct.textContent='Open full preview';direct.href=src.blob||resource.url;direct.target='_blank';direct.rel='noopener';status.append(p,retry,direct);};frame.onerror=()=>s.fail('This preview could not be loaded.');s.timer=setTimeout(()=>s.fail('The preview did not produce visible content. Retry or open it directly.'),12000);return s;}
|
|
57
|
+
function scrollFrame(s,y){if(!s?.frame||!Number.isFinite(y))return;s.y=Math.max(0,Math.min(y,s.ready?Math.max(0,s.height-s.viewHeight):y));s.atEnd=s.ready&&s.y>=s.height-s.viewHeight-1;positions.set(s.resource.id,s.atEnd?Number.MAX_SAFE_INTEGER:s.y);if(s.ready)s.frame.contentWindow.postMessage({channel:'vitris-specimen-v1',kind:'scroll-to',identity:s.resource.id,nonce:s.nonce,y},'*');}
|
|
58
|
+
addEventListener('message',e=>{const m=e.data;if(!m||m.channel!=='vitris-specimen-v1')return;const s=[...frames].find(s=>e.source===s.frame.contentWindow&&m.nonce===s.nonce&&m.identity===s.resource.id);if(!s||!['null',location.origin].includes(e.origin))return;if(m.kind==='memory'){if(typeof m.key==='string')demoMemory.set(s.theme.id+':'+m.key,m.value);return;}if(m.kind==='navigate'){const pageId=m.pageId||m.role;if(!s.theme.pages.some(p=>(p.pageId||p.role)===pageId))return;if(s===detailFrame){example=pageId;drawDetail();}else if(compareFrames.includes(s)){compareExample=pageId;drawCompare();}else{const c=[...cards.values()].find(c=>c.state===s);c?.show(pageId,c.lastButton);}return;}if(m.kind==='error'){s.fail(m.message||'Preview content is unavailable.');return;}if(m.kind==='close'){if(s===detailFrame)$('detail').close();else if(compareFrames.includes(s))$('comparison').close();else [...cards.values()].find(c=>c.state===s)?.deactivate();return;}if(m.kind==='edge'){if(!s.host.classList.contains('preview')||!Number.isFinite(m.delta)||![0,1,2].includes(m.mode))return;scrollBy({top:m.delta*(m.mode===1?16:m.mode===2?innerHeight:1),behavior:'instant'});return;}if(!['ready','scroll','resize'].includes(m.kind)||![m.y,m.height,m.viewport].every(Number.isFinite)||m.height<=0||m.viewport<=0)return;const keepEnd=s.atEnd;s.height=m.height;s.viewHeight=m.viewport;if(m.kind==='resize'){if(keepEnd)scrollFrame(s,Number.MAX_SAFE_INTEGER);}else if(m.kind==='ready'){s.ready=true;clearTimeout(s.timer);s.status.hidden=true;s.frame.style.opacity='1';s.host.dataset.ready='true';scrollFrame(s,s.y);for(const [memKey,memValue] of demoMemory){const prefix=s.theme.id+':';if(memKey.startsWith(prefix))s.frame.contentWindow.postMessage({channel:'vitris-specimen-v1',kind:'memory',identity:s.resource.id,nonce:s.nonce,key:memKey.slice(prefix.length),value:memValue},'*');}}else{s.y=m.y;s.atEnd=m.y>=m.height-m.viewport-1;positions.set(s.resource.id,s.atEnd?Number.MAX_SAFE_INTEGER:m.y);}const c=[...cards.values()].find(c=>c.state===s);if(c)c.progress.textContent=Math.round(100*s.y/Math.max(1,s.height-s.viewHeight))+'%';});
|
|
59
|
+
|
|
60
|
+
const visibleObserver=new IntersectionObserver(entries=>{for(const entry of entries){const c=[...cards.values()].find(c=>c.host===entry.target);if(c&&!entry.isIntersecting&&c.state&&!c.element.contains(document.activeElement))c.deactivate(false);}},{rootMargin:'300px 0px'});
|
|
61
|
+
function button(text,action,cls){const b=document.createElement('button');b.textContent=text;b.onclick=action;if(cls)b.className=cls;return b;}
|
|
62
|
+
function makeCard(t,archive){
|
|
63
|
+
const element=document.createElement('article');element.className='card';element.dataset.theme=t.id;element.dataset.release=t.release;element.setAttribute('role','listitem');
|
|
64
|
+
const meta=document.createElement('aside');meta.className='cardmeta';const head=document.createElement('div');head.className='cardhead';const title=document.createElement('div'),small=document.createElement('div');small.className='small';small.textContent=t.browse.family+' · '+t.browse.primaryIdentity+(t.browse.industry?' · '+t.browse.industry:'')+(t.pages?.some(p=>p.group==='Legal')?' · '+t.pageCount+' pages · '+(t.pageCount-t.pages.filter(p=>p.group==='Legal').length)+' substantive + '+t.pages.filter(p=>p.group==='Legal').length+' support':(t.pageCount>5?' · '+t.pageCount+' pages':''))+(t.audience?' · '+t.audience:'')+(t.browse.new?' · New':'');const h=document.createElement('h3');h.textContent=t.name;title.append(small,h);const save=button('☆',()=>toggleShort(t),'save');save.setAttribute('aria-label','Save '+t.name+' to shortlist');head.append(title,save);
|
|
65
|
+
const foot=document.createElement('div');foot.className='cardfoot';const business=document.createElement('strong');business.className='demo-business';business.textContent=t.business;const p=document.createElement('p');p.textContent=t.description;const affinities=document.createElement('p');affinities.className='affinities';affinities.textContent=t.browse.identities.join(' · ');const actions=document.createElement('div');actions.className='actions';const explore=button('Explore '+t.name,()=>openDetail(t,explore));const chooseButton=button('Choose',()=>choose(t.id,t.release));chooseButton.setAttribute('aria-label','Choose '+t.name);if(archive){chooseButton.disabled=true;chooseButton.title='Preserved for accepted historical choices.';}const label=document.createElement('label');label.className='comparepick';const check=document.createElement('input');check.type='checkbox';check.setAttribute('aria-label','Compare '+t.name);check.onchange=()=>toggleCompare(t,check.checked);label.append(check,'Compare');actions.append(explore,chooseButton,label);foot.append(business,p,affinities,actions);meta.append(head,foot);
|
|
66
|
+
const overview=document.createElement('div');overview.className='page-overview';const mobileSelect=document.createElement('select');mobileSelect.className='row-page-select';mobileSelect.setAttribute('aria-label',t.name+' page thumbnail');const tiles=document.createElement('div');tiles.className='page-tiles';
|
|
67
|
+
const top=document.createElement('div');top.className='previewtools';top.hidden=true;const hint=document.createElement('span'),progress=document.createElement('span');progress.textContent='0%';hint.append('Live scroll preview · ',progress);const exit=button('Return to gallery',null,'exitpreview');const host=document.createElement('div');host.className='preview';host.hidden=true;host.tabIndex=0;host.setAttribute('role','region');host.setAttribute('aria-label','Scroll '+t.name+' preview');top.append(hint,exit);
|
|
68
|
+
const c={element,theme:t,host,progress,choose:chooseButton,save,check,state:null,archive,role:pageKey(t.pages[0]),thumbs:[]};let active=false;
|
|
69
|
+
c.deactivate=(focus=true)=>{active=false;dispose(c.state);c.state=null;host.replaceChildren();host.hidden=true;top.hidden=true;if(focus){c.lastButton?.focus({preventScroll:true});if(Number.isFinite(c.galleryY))scrollTo({top:c.galleryY,behavior:'instant'});}};c.isActive=()=>active;
|
|
70
|
+
c.show=(role,focus)=>{for(const other of cards.values())if(other!==c&&other.state)other.deactivate(false);if(!active)c.galleryY=scrollY;c.role=role;c.lastButton=focus;active=true;host.hidden=false;top.hidden=false;dispose(c.state);c.state=mount(host,t,role,browse.viewport);c.syncThumbs();host.scrollIntoView({block:'center',behavior:'instant'});host.focus({preventScroll:true});};
|
|
71
|
+
c.syncThumbs=()=>{for(const item of c.thumbs){const r=resourceFor(t,item.role,browse.viewport);item.tile.dataset.visible=String(item.role===c.role);item.img.alt=t.name+' · '+item.label+' · '+(browse.palette==='brand'?model().brand.name:'Original palette');if(r.thumbnail){item.img.src=r.thumbnail;item.img.hidden=false;item.fallback.hidden=true;}else{item.img.hidden=true;item.fallback.hidden=false;}}mobileSelect.value=c.role;c.full.href=resourceFor(t,pageKey(t.pages[0]),browse.viewport).full;c.full.textContent=t.pageCount>5?'Explore all '+t.pageCount+' pages':archive?'Open preserved preview ↗':'Open full site ↗';if(!session){c.full.onclick=e=>{e.preventDefault();openDetail(t,c.full,pageKey(t.pages[0]));};}};
|
|
72
|
+
for(const page of t.pages.filter(p=>p.featured!==false).slice(0,t.pageCount>5?5:99)){const tile=document.createElement('section');tile.className='page-tile';tile.dataset.role=pageKey(page);const imageButton=button('',()=>openDetail(t,imageButton));imageButton.className='thumbnail-button';imageButton.setAttribute('aria-label','Explore '+t.name+' '+page.label);imageButton.onclick=()=>{openDetail(t,imageButton,pageKey(page));};const img=document.createElement('img');img.loading='lazy';img.decoding='async';img.width=480;img.height=300;const fallback=document.createElement('span');fallback.className='thumb-fallback';fallback.textContent='Open the live page';img.onerror=()=>{img.hidden=true;fallback.hidden=false;fallback.textContent='Live page available';};imageButton.append(img,fallback);const caption=document.createElement('div');caption.className='tile-caption';const text=document.createElement('strong');text.textContent=page.label;const scroll=button('Scroll preview',()=>c.show(pageKey(page),scroll));scroll.setAttribute('aria-label','Scroll '+t.name+' '+page.label);caption.append(text,scroll);tile.append(imageButton,caption);tiles.append(tile);c.thumbs.push({tile,img,fallback,role:pageKey(page),label:page.label});const option=document.createElement('option');option.value=pageKey(page);option.textContent=page.label;mobileSelect.append(option);}
|
|
73
|
+
for(const page of t.pages){if([...mobileSelect.options].some(o=>o.value===pageKey(page)))continue;const option=document.createElement('option');option.value=pageKey(page);option.textContent=page.label;mobileSelect.append(option);}const full=document.createElement('a');full.className='full-site-tile';full.target='_blank';full.rel='noopener';full.textContent=archive?'Open preserved preview ↗':'Open full site ↗';c.full=full;tiles.append(full);mobileSelect.onchange=()=>{c.role=mobileSelect.value;if(c.state)c.show(c.role,mobileSelect);else c.syncThumbs();};overview.append(mobileSelect,tiles);element.append(meta,overview,top,host);c.syncThumbs();exit.onclick=()=>c.deactivate();
|
|
74
|
+
host.onkeydown=e=>{const map={ArrowDown:80,ArrowUp:-80,PageDown:Math.max(250,(c.state?.viewHeight||600)*.85),PageUp:-Math.max(250,(c.state?.viewHeight||600)*.85),Home:0,End:Number.MAX_SAFE_INTEGER};if(e.key==='Escape'){e.preventDefault();c.deactivate();}else if(e.key in map){e.preventDefault();scrollFrame(c.state,e.key==='Home'||e.key==='End'?map[e.key]:(c.state?.y||0)+map[e.key]);}};
|
|
75
|
+
host.addEventListener('wheel',e=>{if(!active||e.ctrlKey||e.metaKey||Math.abs(e.deltaX)>Math.abs(e.deltaY)||!c.state?.ready)return;const s=c.state,delta=e.deltaY*(e.deltaMode===1?16:e.deltaMode===2?s.viewHeight:1);if((delta>0&&s.y<s.height-s.viewHeight-1)||(delta<0&&s.y>1)){e.preventDefault();scrollFrame(s,s.y+delta);}},{passive:false});return c;
|
|
76
|
+
}
|
|
77
|
+
function baseThemes(){return browse.archive==='current'?model().themes:model().archiveThemes.filter(t=>t.release===browse.archive);}
|
|
78
|
+
function syncControls(){$('allentry').setAttribute('aria-pressed',String(browse.collection==='All directions'));$('localentry').setAttribute('aria-pressed',String(browse.collection==='Local Service Edit'));for(const [id,k] of Object.entries({collection:'collection',search:'query',group:'group',sort:'sort',archive:'archive',palette:'palette',cardviewport:'viewport'}))$(id).value=browse[k];for(const input of $('facets').querySelectorAll('input'))input.checked=browse[input.dataset.facet].includes(input.value);}
|
|
79
|
+
// Some embedded browsers hit the focused outer control at fractional iframe edges.
|
|
80
|
+
// Route only a real wheel whose pointer is visibly inside an active preview.
|
|
81
|
+
// Keep focus untouched, and leave zoom, horizontal gestures and edge exit native.
|
|
82
|
+
document.addEventListener('wheel',e=>{if(e.defaultPrevented||e.ctrlKey||e.metaKey||Math.abs(e.deltaX)>Math.abs(e.deltaY))return;for(const s of frames){if(!s.host.isConnected||!s.ready||!s.host.getClientRects().length)continue;const r=s.host.getBoundingClientRect();if(e.clientX<r.left||e.clientX>=r.right||e.clientY<r.top||e.clientY>=r.bottom)continue;const delta=e.deltaY*(e.deltaMode===1?16:e.deltaMode===2?s.viewHeight:1);if((delta>0&&s.y<s.height-s.viewHeight-1)||(delta<0&&s.y>1)){e.preventDefault();scrollFrame(s,s.y+delta);}break;}},{capture:true,passive:false});
|
|
83
|
+
function applyFilter(){const result=browseResults(baseThemes(),browse);for(const c of cards.values())visibleObserver.unobserve(c.host);const fragment=document.createDocumentFragment();for(const g of result.groups){const section=document.createElement('section');section.className='group';if(g.name){const h=document.createElement('h2');h.textContent=g.name+' · '+g.themes.length;section.append(h);}const grid=document.createElement('div');grid.className='grid';grid.setAttribute('role','list');for(const t of g.themes)grid.append(cards.get(key(t)).element);section.append(grid);fragment.append(section);}$('grid').replaceChildren(fragment);const visible=new Set(result.visible.map(key));for(const [k,c] of cards)if(visible.has(k))visibleObserver.observe(c.host);else if(c.state){dispose(c.state);c.state=null;}$('count').textContent=result.visible.length+' of '+baseThemes().length+' directions'+(browse.query?' for “'+browse.query+'”':'');$('empty').hidden=!!result.visible.length;syncControls();syncFacetCounts();syncChips();syncShort();persist();}
|
|
84
|
+
function syncChips(){$('chips').replaceChildren();const chips=[];if(browse.collection!=='All directions')chips.push(['Collection: '+browse.collection,()=>{browse.collection='All directions';applyFilter();}]);for(const k of ['industries','families','identities','media','tasks'])for(const value of browse[k])chips.push([value,()=>{browse[k]=browse[k].filter(x=>x!==value);applyFilter();}]);if(browse.query)chips.push(['Search: '+browse.query,()=>{browse.query='';applyFilter();}]);for(const [name,remove] of chips){const b=button(name+' ×',remove);b.setAttribute('aria-label','Remove '+name);$('chips').append(b);}if(!chips.length)$('chips').hidden=true;else $('chips').hidden=false;$('empty').querySelector('p').textContent='Current filters: '+(chips.map(c=>c[0]).join(' · ')||'none')+'. Try a broader phrase or remove a filter.';}
|
|
85
|
+
function facetUI(){const specs=[['industries','Industry',vocabulary.industries||[]],['families','Family',Object.keys(vocabulary.families)],['identities','Identity',vocabulary.identities],['media','Images',['none','light','photo-led']],['tasks','Customer task',['call','quote','appointment','understand work','inspection','estimate']]];$('facets').replaceChildren();const advanced=document.createElement('details'),summary=document.createElement('summary');summary.textContent='More filters';advanced.append(summary);for(const [facet,name,values] of specs){const field=document.createElement('fieldset'),legend=document.createElement('legend');legend.textContent=name;field.append(legend);if(facet==='identities'){const explanation=document.createElement('p');explanation.className='family-description';explanation.textContent='How you want your business to feel.';field.append(explanation);}for(const value of values){const label=document.createElement('label'),input=document.createElement('input'),count=document.createElement('small');input.type='checkbox';input.value=value;input.dataset.facet=facet;input.onchange=()=>{browse[facet]=input.checked?[...browse[facet],value]:browse[facet].filter(x=>x!==value);applyFilter();};const display={none:'No photos needed',light:'A few images','photo-led':'Photography leads',call:'Phone enquiry',quote:'Request a quote',appointment:'Appointment / class','understand work':'Understand the work'};count.textContent=baseThemes().filter(t=>{if(facet==='families')return t.browse.family===value;if(facet==='media')return t.browse.media===value;if(facet==='industries')return (t.browse.industries||[t.browse.industry]).includes(value);return (t.browse[facet]||[]).includes(value);}).length;label.append(input,display[value]||value,count);field.append(label);if(facet==='families'){const d=document.createElement('p');d.className='family-description';d.textContent=vocabulary.families[value];field.append(d);if(browse.archive==='current'){const strip=document.createElement('div');strip.className='family-samples';strip.setAttribute('aria-label',value+' examples');for(const t of model().themes.filter(t=>t.browse.family===value&&vocabulary.samples[t.id]).slice(0,3)){const img=document.createElement('img');img.src=vocabulary.samples[t.id];img.alt=t.name+' original palette opening';img.title=t.name;strip.append(img);}field.append(strip);}}}if(['media','tasks'].includes(facet))advanced.append(field);else $('facets').append(field);}$('facets').append(advanced);}
|
|
86
|
+
function notice(text){$('browsenotice').textContent=text;setTimeout(()=>{$('browsenotice').textContent='';},5000);}
|
|
87
|
+
function syncFacetCounts(){for(const input of $('facets').querySelectorAll('input[data-facet]')){const facet=input.dataset.facet;const count=browseResults(baseThemes(),{...browse,[facet]:[input.value]}).visible.length;input.parentElement.querySelector('small').textContent=count;}}
|
|
88
|
+
function toggleShort(t){const k=key(t);if(browse.shortlist.includes(k)){browse.shortlist=browse.shortlist.filter(x=>x!==k);browse.compare=browse.compare.filter(x=>x!==k);}else if(browse.shortlist.length<6)browse.shortlist.push(k);else notice('Your shortlist holds six directions. Remove one to add another.');syncShort();persist();}
|
|
89
|
+
function toggleCompare(t,yes){const k=key(t);if(!yes)browse.compare=browse.compare.filter(x=>x!==k);else if(browse.compare.length>=3)notice('Compare up to three directions.');else if(!browse.shortlist.includes(k)&&browse.shortlist.length>=6)notice('Remove a shortlisted direction first.');else {if(!browse.shortlist.includes(k))browse.shortlist.push(k);browse.compare.push(k);}syncShort();persist();}
|
|
90
|
+
function syncShort(){for(const [k,c] of cards){const saved=browse.shortlist.includes(k);c.save.textContent=saved?'★':'☆';c.save.setAttribute('aria-pressed',String(saved));c.check.checked=browse.compare.includes(k);}$('shortlist').hidden=!browse.shortlist.length;$('shortcount').textContent='Shortlist '+browse.shortlist.length+'/6';$('shortnames').replaceChildren();for(const k of browse.shortlist){const t=byKey(k);$('shortnames').append(button(t.name+' ×',()=>toggleShort(t)));}$('compareopen').textContent='Compare '+browse.compare.length+'/3';$('compareopen').disabled=browse.compare.length<2;if(opened)$('detailsave').textContent=browse.shortlist.includes(key(opened))?'Remove from shortlist':'Save to shortlist';}
|
|
91
|
+
function render(){for(const c of cards.values()){visibleObserver.unobserve(c.host);dispose(c.state);}cards.clear();const m=model();restoreBrowse();selected=null;selectedRelease=null;$('notes').value='';for(const id of ['adaptsections','adaptimages','adaptpriorities'])$(id).value='';try{const draft=JSON.parse(localStorage.getItem(draftKey())||'null');if(draft){selected=draft.selected;selectedRelease=draft.release||m.current?.themeRelease||m.themes[0].release;$('notes').value=typeof draft.notes==='string'?draft.notes:'';for(const [id,key] of [['adaptsections','sections'],['adaptimages','aiImages'],['adaptpriorities','priorities']])$(id).value=draft.adaptation?.[key]||'';}else if(m.current){selected=m.current.themeId;selectedRelease=m.current.themeRelease;$('notes').value=m.current.notes;for(const [id,key] of [['adaptsections','sections'],['adaptimages','aiImages'],['adaptpriorities','priorities']])$(id).value=m.current.adaptation?.[key]||'';}}catch{}$('brandbar').replaceChildren();if(m.logo){const img=document.createElement('img');img.src=m.logo;img.alt=m.brand.name;$('brandbar').append(img);}const name=document.createElement('strong');name.textContent=m.brand.name;$('brandbar').append(name);const palette=document.createElement('div');palette.className='palette';palette.setAttribute('aria-label','Captured brand palette');for(const color of m.brand.colors.length?m.brand.colors:[{value:'#56636b'}]){const sw=document.createElement('span');sw.style.background=color.value;sw.title=color.value;palette.append(sw);}$('brandbar').append(palette);for(const [list,archive] of [[m.themes,false],[m.archiveThemes,true]])for(const t of list)cards.set(key(t),makeCard(t,archive));$('mode').textContent=m.test?'Local review demo · test choices only':'Your agent continues on its next workflow invocation.';$('saved').replaceChildren();if(m.current){const saved=findTheme(m.current.themeId,m.current.themeRelease);if(saved){const b=button('Saved direction: '+saved.name,()=>openDetail(saved,b));$('saved').append(b);}}facetUI();update();applyFilter();}
|
|
92
|
+
function drawDetail(){dispose(detailFrame);syncPageOptions($('detailpage'),opened,example);example=$('detailpage').value;const resource=resourceFor(opened,example,viewport);$('direct').href=resource.full||resource.url||'#';$('direct').hidden=!!resource.html;for(const v of ['desktop','mobile'])$(v).setAttribute('aria-pressed',String(viewport===v));for(const ex of ['story','guide'])$(ex).setAttribute('aria-pressed',String(example===ex));$('detailpalette').value=browse.palette;detailFrame=mount($('canvas'),opened,example,viewport);}
|
|
93
|
+
function pageKey(p){return p.pageId||p.role;}function syncPageOptions(select,t,value){select.replaceChildren();const grouped=t.pageCount>5,groups=new Map();for(const p of t.pages){const o=document.createElement('option');o.value=pageKey(p);o.textContent=p.label;if(grouped){let g=groups.get(p.group);if(!g){g=document.createElement('optgroup');g.label=p.group;groups.set(p.group,g);select.append(g);}g.append(o);}else select.append(o);}const keys=t.pages.map(pageKey);const guide=(t.id==='cleaning-clearline'?t.pages.find(p=>p.pageId==='deep-cleaning'):t.id==='electrical-current-and-craft'?t.pages.find(p=>p.pageId==='ev'):undefined)||t.pages.find(p=>p.pageId==='service-detail')||t.pages.find(p=>p.compareRole==='detail');const alias=value==='story'&&keys.includes('home')?'home':value==='guide'&&guide?pageKey(guide):'';select.value=keys.includes(value)?value:(alias&&keys.includes(alias)?alias:keys[0]);}
|
|
94
|
+
$('detailpage').onchange=e=>{example=e.target.value;drawDetail();};$('comparepage').onchange=e=>{compareExample=e.target.value;drawCompare();};
|
|
95
|
+
function openDetail(t,focus,role='story'){opened=t;lastFocus=focus;galleryY=scrollY;example=role;$('canvas').dataset.ready='false';viewport=browse.viewport;$('detailtitle').textContent=t.name;$('principles').textContent=t.description;$('freedoms').textContent=t.keep+' '+t.freedoms;$('assets').textContent=t.image;$('fit').textContent=t.browse.fit.join(' · ');$('guide').textContent=t.release==='2026-10-08.1'?'Field guide':'Service detail';$('choose').disabled=model().archiveThemes.includes(t);syncShort();$('detail').showModal();$('close').focus({preventScroll:true});requestAnimationFrame(()=>{if($('detail').open)drawDetail();});}
|
|
96
|
+
// A native dialog close event is queued. Do not let it steal newer focus or clear a reopened canvas.
|
|
97
|
+
function restoreGallery(dialog){const focused=document.activeElement;if(focused===document.body||dialog.contains(focused)||focused===lastFocus){lastFocus?.focus({preventScroll:true});scrollTo({top:galleryY,behavior:'instant'});}}
|
|
98
|
+
$('close').onclick=()=>$('detail').close();$('detail').addEventListener('close',()=>{if($('detail').open)return;dispose(detailFrame);detailFrame=null;$('canvas').replaceChildren();restoreGallery($('detail'));});$('choose').onclick=()=>{choose(opened.id,opened.release);$('detail').close();$('choice').scrollIntoView({behavior:'instant'});$('notes').focus();};$('detailsave').onclick=()=>toggleShort(opened);for(const v of ['desktop','mobile'])$(v).onclick=()=>{viewport=v;drawDetail();};for(const ex of ['story','guide'])$(ex).onclick=()=>{example=ex;drawDetail();};
|
|
99
|
+
function paletteChanged(mode){browse.palette=mode;syncControls();for(const c of cards.values()){c.syncThumbs();if(c.state)c.show(c.role,c.lastButton);}if($('detail').open)drawDetail();if($('comparison').open)drawCompare();persist();}
|
|
100
|
+
$('detailpalette').onchange=e=>paletteChanged(e.target.value);$('palette').onchange=e=>paletteChanged(e.target.value);
|
|
101
|
+
function drawCompare(){const first=byKey(comparePair[0]);if(first){syncPageOptions($('comparepage'),first,compareExample);compareExample=$('comparepage').value;}for(const s of compareFrames)dispose(s);compareFrames=[];$('comparecolumns').replaceChildren();$('comparetabs').replaceChildren();for(const v of ['desktop','mobile'])$('compare'+v).setAttribute('aria-pressed',String(compareViewport===v));for(const ex of ['story','guide'])$('compare'+ex).setAttribute('aria-pressed',String(compareExample===ex));$('comparepalette').value=browse.palette;comparePair.forEach((k,i)=>{const t=byKey(k);if(!t)return;const tab=button(t.name,()=>{compareTab=i;drawCompare();});tab.setAttribute('aria-pressed',String(compareTab===i));$('comparetabs').append(tab);const col=document.createElement('section');col.className='comparecolumn';col.dataset.visible=String(compareTab===i);const h=document.createElement('h3');h.textContent=t.name;const jump=document.createElement('div');jump.className='jump';const host=document.createElement('div');host.className='canvas';for(const [name,fraction] of [['Start',0],['Middle',.5],['End',1]])jump.append(button(name,()=>{const s=compareFrames.find(s=>s.host===host);if(s?.ready)scrollFrame(s,(s.height-s.viewHeight)*fraction);}));const dl=document.createElement('dl');for(const [name,value] of [['Personality',t.browse.identities.join(' · ')],['Structure',t.description],['Images',t.image],['Customer tasks',t.browse.tasks.join(' · ')]]){const dt=document.createElement('dt'),dd=document.createElement('dd');dt.textContent=name;dd.textContent=value;dl.append(dt,dd);}col.append(h,jump,host,dl);$('comparecolumns').append(col);requestAnimationFrame(()=>{if($('comparison').open&&host.isConnected&&getComputedStyle(col).display!=='none')compareFrames.push(mount(host,t,(()=>{const key=pageKey;if(t.pages.some(p=>key(p)===compareExample))return compareExample;if(compareExample==='story'&&t.pages.some(p=>key(p)==='home'))return 'home';if(compareExample==='guide'&&t.pages.some(p=>key(p)==='service-detail'))return 'service-detail';const source=byKey(comparePair[0]);const selected=source?.pages.find(p=>key(p)===compareExample);const match=selected?.compareRole&&t.pages.find(p=>p.compareRole===selected.compareRole&&(!['electrical-current-and-craft','cleaning-clearline'].includes(t.id)||p.featured));return match?key(match):null;})(),compareViewport));});});for(const [id,index] of [['compareleft',0],['compareright',1]]){$(id).replaceChildren();for(const k of browse.compare){const o=document.createElement('option');o.value=k;o.textContent=byKey(k).name;$(id).append(o);}$(id).value=comparePair[index];}}
|
|
102
|
+
$('compareopen').onclick=()=>{lastFocus=$('compareopen');galleryY=scrollY;comparePair=browse.compare.slice(0,3);compareTab=0;compareViewport=browse.viewport;$('comparison').showModal();$('compareclose').focus();drawCompare();};$('compareclose').onclick=()=>$('comparison').close();$('comparison').addEventListener('close',()=>{if($('comparison').open)return;for(const s of compareFrames)dispose(s);compareFrames=[];$('comparecolumns').replaceChildren();restoreGallery($('comparison'));});for(const v of ['desktop','mobile'])$('compare'+v).onclick=()=>{compareViewport=v;drawCompare();};for(const ex of ['story','guide'])$('compare'+ex).onclick=()=>{compareExample=ex;drawCompare();};$('comparepalette').onchange=e=>paletteChanged(e.target.value);for(const [id,index] of [['compareleft',0],['compareright',1]])$(id).onchange=e=>{const next=e.target.value,other=1-index;if(comparePair[other]===next)comparePair[other]=comparePair[index];comparePair[index]=next;drawCompare();};
|
|
103
|
+
function clearFilters(){for(const k of ['families','identities','industries','media','tasks'])browse[k]=[];browse.collection='All directions';applyFilter();}
|
|
104
|
+
function closeFilters(){if($('filterdrawer').open)$('filterdrawer').close();}
|
|
105
|
+
$('filterdrawer').addEventListener('close',()=>{if($('filterdrawer').open)return;const focused=document.activeElement,restore=focused===document.body||$('filterdrawer').contains(focused)||focused===$('filterbutton');$('filters').classList.remove('open');document.querySelector('.gallery-layout').prepend($('filters'));$('filterbutton').setAttribute('aria-expanded','false');if(restore)$('filterbutton').focus({preventScroll:true});});$('filterbutton').onclick=()=>{$('filterdrawer').append($('filters'));$('filters').classList.add('open');$('filterbutton').setAttribute('aria-expanded','true');$('filterdrawer').showModal();$('filtersclose').focus();};$('filtersclose').onclick=closeFilters;$('filterbackdrop').onclick=closeFilters;
|
|
106
|
+
$('allentry').onclick=()=>{browse.collection='All directions';applyFilter();};$('localentry').onclick=()=>{browse.collection='Local Service Edit';applyFilter();};$('clearfilters').onclick=clearFilters;$('emptyclear').onclick=clearFilters;$('emptyquery').onclick=()=>{browse.query='';applyFilter();};$('clearall').onclick=()=>{const {shortlist,compare}=browse;browse={...defaults(),shortlist,compare};facetUI();applyFilter();};$('shortclear').onclick=()=>{browse.shortlist=[];browse.compare=[];syncShort();persist();};for(const id of ['notes','adaptsections','adaptimages','adaptpriorities'])$(id).oninput=()=>{pending=null;stash();};
|
|
107
|
+
for(const [id,k] of Object.entries({collection:'collection',group:'group',sort:'sort',archive:'archive'}))$(id).onchange=e=>{browse[k]=e.target.value;if(id==='archive')facetUI();applyFilter();};$('search').oninput=e=>{browse.query=e.target.value;applyFilter();};$('cardviewport').onchange=e=>{browse.viewport=e.target.value;for(const c of cards.values()){c.syncThumbs();if(c.state){dispose(c.state);c.state=mount(c.host,c.theme,c.role,browse.viewport);}}persist();};
|
|
108
|
+
` + SELECTION_RUNTIME + String.raw`
|
|
109
|
+
models.forEach((m,i)=>{const o=document.createElement('option');o.value=String(i);o.textContent=m.brand.name;$('brandselect').append(o);});$('brandselect').hidden=models.length===1;$('brandselect').onchange=e=>{stash();brandIndex=Number(e.target.value);render();};render();
|
|
110
|
+
`;
|
|
111
|
+
|
|
112
|
+
export {
|
|
113
|
+
renderThemePickerShell,
|
|
114
|
+
PICKER_RUNTIME
|
|
115
|
+
};
|