{"artifactCount":5,"artifacts":[{"artifactKind":"react-component","category":"component","codeHref":"/components/ask-ai-logo-links/code","dependencies":{"assets":[{"href":"/ai-logos/chatgpt.svg","kind":"svg","label":"ChatGPT logo"},{"href":"/ai-logos/grok.svg","kind":"svg","label":"Grok logo"},{"href":"/ai-logos/perplexity.svg","kind":"svg","label":"Perplexity logo"},{"href":"/ai-logos/gemini.svg","kind":"svg","label":"Gemini logo"},{"href":"/ai-logos/claude.svg","kind":"svg","label":"Claude logo"}],"notes":["Uses CSS masks so the saved SVG logos inherit currentColor."],"runtime":"react"},"description":"Responsive AI service links with CSS-mask logos and no UI package.","downloadHref":"/components/ask-ai-logo-links/download","exports":[{"description":"Copy every source file listed in this artifact bundle.","href":"/components/ask-ai-logo-links/code","id":"source-bundle","label":"Source bundle"},{"description":"Open the build-time React preview route used by the iframe.","href":"/components/ask-ai-logo-links/react-preview","id":"compiled-preview","label":"Compiled preview"},{"description":"Inspect artifact metadata, dependencies, files, and preview fidelity.","href":"/components/ask-ai-logo-links/manifest","id":"manifest","label":"Manifest JSON"},{"description":"Copy framework/runtime notes, required files, and integration steps.","href":"/components/ask-ai-logo-links/usage","id":"integration-guide","label":"Integration guide"},{"description":"Download source files, manifest JSON, and a README as a zip.","href":"/components/ask-ai-logo-links/download","id":"download-zip","label":"Download zip"}],"files":[{"language":"tsx","path":"components/ask-ai-logo-links.tsx","sha256":"d8cecb30aafd0b01f30cba6388b118ec7744a1e19a676c5039c1afec534327f1","sizeBytes":1359},{"language":"css","path":"components/ask-ai-logo-links.module.css","sha256":"723e658dac855f3a8454e9ac1f8d93e375ff2ae4404dc7d04aed69a2e0ab6e9a","sizeBytes":997},{"language":"ts","path":"components/ai-services.ts","sha256":"587ac6cbf8a0ef0d21c630c29ab2c127a6bb77723ec9ef014ed9d1ec0d93c280","sizeBytes":1797},{"language":"xml","path":"public/ai-logos/chatgpt.svg","sha256":"c347b91e0af15bbf372a61ee641f12a1a9252607da46ce763c46425086784dbb","sizeBytes":3947},{"language":"xml","path":"public/ai-logos/grok.svg","sha256":"33a5d8ce0396dcb815bcfdae75708246ec1673f48ed6ab82cdd512c2b25efb08","sizeBytes":943},{"language":"xml","path":"public/ai-logos/perplexity.svg","sha256":"f23d45c17782a656bdabd9d92fafb313f9dd8ba9df8307489a4806b2413c7580","sizeBytes":590},{"language":"xml","path":"public/ai-logos/gemini.svg","sha256":"cc8d80780a7cbb041481f58ca4a7d3722bfca1200ec70de651f8523ed210b303","sizeBytes":1380},{"language":"xml","path":"public/ai-logos/claude.svg","sha256":"6da59922ce1ebc22167bd2eef52ed1f25679b6b58e03abe66ca9d469fc233efc","sizeBytes":2595}],"id":"ask-ai-logo-links","initialHeight":360,"manifestHref":"/components/ask-ai-logo-links/manifest","minViewportWidth":300,"mobileHeight":420,"name":"ask-ai-logo-links","previewHref":"/components/ask-ai-logo-links/react-preview","previewMode":"compiled-react","presets":[{"id":"desktop","label":"Desktop","width":"100%"},{"id":"tablet","label":"Tablet","width":"62%"},{"id":"mobile","label":"Mobile","width":"34%"}],"schemaVersion":1,"tags":["ai","logo-links","css-masks","react","zero-extra-packages","css-modules"],"title":"Ask AI Logo Links","usageHref":"/components/ask-ai-logo-links/usage"},{"animation":{"performanceNotes":["Pressed affordances use transform, filter, and opacity without layout work.","The preview script only toggles data/ARIA state for interaction."],"properties":["transform","opacity","filter","background-color"],"reducedMotion":true,"types":["transition"]},"artifactKind":"react-component","category":"component","codeHref":"/components/shop-glassy-buttons/code","dependencies":{"notes":["React wrapper with CSS-module styles; preview renders through the compiled React route."],"runtime":"react"},"description":"Checkout button variants with glassy surfaces and lightweight press states.","downloadHref":"/components/shop-glassy-buttons/download","exports":[{"description":"Copy every source file listed in this artifact bundle.","href":"/components/shop-glassy-buttons/code","id":"source-bundle","label":"Source bundle"},{"description":"Open the build-time React preview route used by the iframe.","href":"/components/shop-glassy-buttons/react-preview","id":"compiled-preview","label":"Compiled preview"},{"description":"Inspect artifact metadata, dependencies, files, and preview fidelity.","href":"/components/shop-glassy-buttons/manifest","id":"manifest","label":"Manifest JSON"},{"description":"Copy framework/runtime notes, required files, and integration steps.","href":"/components/shop-glassy-buttons/usage","id":"integration-guide","label":"Integration guide"},{"description":"Download source files, manifest JSON, and a README as a zip.","href":"/components/shop-glassy-buttons/download","id":"download-zip","label":"Download zip"}],"files":[{"language":"tsx","path":"examples/glassy-button-preview.tsx","sha256":"714469b6574c2975e93c03702671a6936e164ab8392c68eeb42daf05e9eed54d","sizeBytes":612},{"language":"tsx","path":"components/shop-glassy-button.tsx","sha256":"fafcfb04d0482667e7e0fe9168f12cab4dc50e6243a6ae24225007a419cb150c","sizeBytes":859},{"language":"css","path":"components/shop-glassy-button.module.css","sha256":"92903c0a33a30be27fa5a7a72d71f4ded5813e79ba7d2b528c9b0743e3899a47","sizeBytes":3833}],"id":"shop-glassy-buttons","initialHeight":430,"manifestHref":"/components/shop-glassy-buttons/manifest","minViewportWidth":300,"mobileHeight":540,"name":"shop-glassy-buttons","previewHref":"/components/shop-glassy-buttons/react-preview","previewMode":"compiled-react","presets":[{"id":"desktop","label":"Desktop","width":"100%"},{"id":"tablet","label":"Tablet","width":"62%"},{"id":"mobile","label":"Mobile","width":"34%"}],"schemaVersion":1,"tags":["button","checkout","css-modules","react","zero-extra-packages","reduced-motion"],"title":"Glassy Checkout Buttons","usageHref":"/components/shop-glassy-buttons/usage"},{"animation":{"performanceNotes":["Action button feedback stays on transform and opacity.","Radio selection is represented in CSS with data-selected state."],"properties":["transform","opacity","background-color"],"reducedMotion":true,"types":["transition"]},"artifactKind":"react-component","category":"component","codeHref":"/components/shop-purchase-plan/code","dependencies":{"notes":["React wrapper with CSS-module styles; preview renders through the compiled React route."],"runtime":"react"},"description":"Pricing card with radio-plan state and reusable checkout actions.","downloadHref":"/components/shop-purchase-plan/download","exports":[{"description":"Copy every source file listed in this artifact bundle.","href":"/components/shop-purchase-plan/code","id":"source-bundle","label":"Source bundle"},{"description":"Open the build-time React preview route used by the iframe.","href":"/components/shop-purchase-plan/react-preview","id":"compiled-preview","label":"Compiled preview"},{"description":"Inspect artifact metadata, dependencies, files, and preview fidelity.","href":"/components/shop-purchase-plan/manifest","id":"manifest","label":"Manifest JSON"},{"description":"Copy framework/runtime notes, required files, and integration steps.","href":"/components/shop-purchase-plan/usage","id":"integration-guide","label":"Integration guide"},{"description":"Download source files, manifest JSON, and a README as a zip.","href":"/components/shop-purchase-plan/download","id":"download-zip","label":"Download zip"}],"files":[{"language":"tsx","path":"components/shop-purchase-plan-card.tsx","sha256":"5412e53a623dd3307f1f7a6cb922dede0b0848830dcf670888d5cfb09f63dd9f","sizeBytes":2248},{"language":"css","path":"components/shop-purchase-plan-card.module.css","sha256":"f6080e21ed4ef5ec2b58d8809270869695a54352f6e1a0c16bd0d384504547ef","sizeBytes":1852},{"language":"tsx","path":"components/shop-glassy-button.tsx","sha256":"fafcfb04d0482667e7e0fe9168f12cab4dc50e6243a6ae24225007a419cb150c","sizeBytes":859},{"language":"css","path":"components/shop-glassy-button.module.css","sha256":"92903c0a33a30be27fa5a7a72d71f4ded5813e79ba7d2b528c9b0743e3899a47","sizeBytes":3833}],"id":"shop-purchase-plan","initialHeight":430,"manifestHref":"/components/shop-purchase-plan/manifest","minViewportWidth":300,"name":"shop-purchase-plan","previewHref":"/components/shop-purchase-plan/react-preview","previewMode":"compiled-react","presets":[{"id":"desktop","label":"Desktop","width":"100%"},{"id":"tablet","label":"Tablet","width":"62%"},{"id":"mobile","label":"Mobile","width":"34%"}],"schemaVersion":1,"tags":["pricing-card","checkout","css-modules","react","zero-extra-packages","reduced-motion"],"title":"Purchase Plan Card","usageHref":"/components/shop-purchase-plan/usage"},{"animation":{"performanceNotes":["Hover and pressed affordances use scale transforms and opacity.","Backdrop-filter is isolated to the small icon surface."],"properties":["transform","opacity","background-color","backdrop-filter"],"reducedMotion":true,"types":["transition","backdrop-filter"]},"artifactKind":"react-component","category":"component","codeHref":"/components/shop-floating-icons/code","dependencies":{"notes":["React wrapper with CSS-module styles; preview renders through the compiled React route."],"runtime":"react"},"description":"Small floating action buttons with transform-only hover motion.","downloadHref":"/components/shop-floating-icons/download","exports":[{"description":"Copy every source file listed in this artifact bundle.","href":"/components/shop-floating-icons/code","id":"source-bundle","label":"Source bundle"},{"description":"Open the build-time React preview route used by the iframe.","href":"/components/shop-floating-icons/react-preview","id":"compiled-preview","label":"Compiled preview"},{"description":"Inspect artifact metadata, dependencies, files, and preview fidelity.","href":"/components/shop-floating-icons/manifest","id":"manifest","label":"Manifest JSON"},{"description":"Copy framework/runtime notes, required files, and integration steps.","href":"/components/shop-floating-icons/usage","id":"integration-guide","label":"Integration guide"},{"description":"Download source files, manifest JSON, and a README as a zip.","href":"/components/shop-floating-icons/download","id":"download-zip","label":"Download zip"}],"files":[{"language":"tsx","path":"examples/floating-icon-preview.tsx","sha256":"8f96ff7e996e61fba63c1a85a3f406443aea4639062664253fbadc557e22482a","sizeBytes":1809},{"language":"tsx","path":"components/shop-floating-icon-button.tsx","sha256":"bf8fd455db4a6503338e5ebf871e63c0bb2c9cf247d68770415ac5b103ca3579","sizeBytes":760},{"language":"css","path":"components/shop-floating-icon-button.module.css","sha256":"83a7eadb718df066907513c7c560d73eea99a99b04083b4e330532d6b555472f","sizeBytes":4226}],"id":"shop-floating-icons","initialHeight":400,"manifestHref":"/components/shop-floating-icons/manifest","minViewportWidth":300,"name":"shop-floating-icons","previewHref":"/components/shop-floating-icons/react-preview","previewMode":"compiled-react","presets":[{"id":"desktop","label":"Desktop","width":"100%"},{"id":"tablet","label":"Tablet","width":"62%"},{"id":"mobile","label":"Mobile","width":"34%"}],"schemaVersion":1,"tags":["icon-button","floating-ui","css-modules","react","zero-extra-packages","reduced-motion"],"title":"Floating Icon Buttons","usageHref":"/components/shop-floating-icons/usage"},{"animation":{"performanceNotes":["All entrance and exit motion is compositor-friendly transform and opacity.","Portal keeps a clip-path iris and the holo sheen sweeps via transform — no per-frame filter or gradient repaints.","JavaScript only changes data attributes and dispatches state events."],"properties":["transform","opacity","clip-path","backdrop-filter"],"reducedMotion":true,"types":["keyframes","3d-transform","clip-path","backdrop-filter"]},"artifactKind":"static-effect","category":"effect","codeHref":"/components/flip-modal/code","dependencies":{"notes":["Dependency-free HTML, CSS, and tiny state orchestration JavaScript."],"runtime":"none"},"description":"CSS modal motion variants with tiny state triggers","downloadHref":"/components/flip-modal/download","exports":[{"description":"Copy every source file listed in this artifact bundle.","href":"/components/flip-modal/code","id":"source-bundle","label":"Source bundle"},{"description":"Copy the same standalone HTML document used by the preview.","href":"/components/flip-modal/preview","id":"standalone-preview","label":"Standalone preview"},{"description":"Inspect artifact metadata, dependencies, files, and preview fidelity.","href":"/components/flip-modal/manifest","id":"manifest","label":"Manifest JSON"},{"description":"Copy framework/runtime notes, required files, and integration steps.","href":"/components/flip-modal/usage","id":"integration-guide","label":"Integration guide"},{"description":"Download source files, manifest JSON, and a README as a zip.","href":"/components/flip-modal/download","id":"download-zip","label":"Download zip"}],"files":[{"language":"html","path":"effects/flip-modal/flip-modal.html","sha256":"6af5b5cdc76baad1174893df86f2ac3476bc54500e57b25c492b0cd7aae43e05","sizeBytes":1869},{"language":"css","path":"effects/flip-modal/flip-modal.css","sha256":"8fb3a6e4ae18fd9fbdd82dfab31a8b5879bcdd83691d8f11a6ece4068a00d916","sizeBytes":10473},{"language":"js","path":"effects/flip-modal/flip-modal.js","sha256":"e44e67f105f1040841e63096aeb1eb575c7962465ce34002efbc523b8707814e","sizeBytes":1689}],"id":"flip-modal","initialHeight":560,"manifestHref":"/components/flip-modal/manifest","minViewportWidth":320,"mobileHeight":640,"name":"flip-modal","previewHref":"/components/flip-modal/preview","previewMode":"source-matched","presets":[{"id":"desktop","label":"Desktop","width":"100%"},{"id":"tablet","label":"Tablet","width":"62%"},{"id":"mobile","label":"Mobile","width":"34%"}],"schemaVersion":1,"tags":["modal","css-motion","css-keyframes","3d-transform","zero-dependency","source-matched","reduced-motion"],"title":"Flip Modal","triggers":[{"actions":[{"detail":{"effect":"flip","state":"open"},"name":"heidi:flip-modal","type":"dispatchEvent"}],"defaultActive":true,"description":"Play the flip entrance.","group":"Effect","id":"flip","label":"Flip"},{"actions":[{"detail":{"effect":"portal","state":"open"},"name":"heidi:flip-modal","type":"dispatchEvent"}],"description":"Play the portal clip-path entrance.","group":"Effect","id":"portal","label":"Portal"},{"actions":[{"detail":{"effect":"holo","state":"open"},"name":"heidi:flip-modal","type":"dispatchEvent"}],"description":"Play the holographic fold entrance.","group":"Effect","id":"holo","label":"Holo"},{"actions":[{"detail":{"effect":"stack","state":"open"},"name":"heidi:flip-modal","type":"dispatchEvent"}],"description":"Play the stacked depth entrance.","group":"Effect","id":"stack","label":"Stack"},{"actions":[{"detail":{"state":"closed"},"name":"heidi:flip-modal","type":"dispatchEvent"}],"description":"Close the modal.","group":"State","id":"close","label":"Close","persistent":false}],"usageHref":"/components/flip-modal/usage"}],"catalogHref":"/components/catalog","schemaVersion":1}