{"success":true,"data":{"block":{"id":"process-sticky-steps","name":"Process Sticky Steps","title":"Process Sticky Steps","category":"Process","categorySlug":"process","description":"A process section with a sticky left sidebar containing title, description, and CTA, paired with a scrollable right column of numbered step cards. Each step features a decorative corner illustration and displays step number, title, and description. Ideal for showcasing methodologies, workflows, or multi-step processes.","thumbnail":{"desktop":"https://cdn.ing/assets/i/r/290534/chi37fdy54oymoo1w9sc7e49mt4a/process-sticky-steps-desktop.png","mobile":"https://cdn.ing/assets/i/r/290535/4fnc9khpwby3po22n4lt9fpjdqdt/process-sticky-steps-mobile.png"},"componentPath":"blocks/process/process-sticky-steps.tsx","code":"import { ProcessStickySteps } from \"@opensite/ui/blocks/process/process-sticky-steps\";\nimport { DynamicIcon } from \"@opensite/ui/components/dynamic-icon\";\n\nexport default function Demo() {\n  return (\n    <ProcessStickySteps\n      heading=\"Delivery Process\"\n      description=\"A transparent, collaborative approach that keeps you informed and engaged throughout the project lifecycle.\"\n      actions={[\n        {\n          label: \"Schedule a Call\",\n          href: \"/contact\",\n          variant: \"default\",\n          iconAfter: <DynamicIcon name=\"lucide/phone\" size={16} />,\n        },\n        {\n          label: \"View Pricing\",\n          href: \"/pricing\",\n          variant: \"outline\",\n        },\n      ]}\n      steps={[\n        {\n          step: \"01\",\n          title: \"Project Kickoff\",\n          description: \"Align on goals, timeline, and success criteria. Meet the team, review the project plan, and establish communication protocols for seamless collaboration.\",\n        },\n        {\n          step: \"02\",\n          title: \"Sprint Planning\",\n          description: \"Break down deliverables into manageable sprints. Prioritize features based on value and complexity, ensuring we tackle the most critical items first.\",\n        },\n        {\n          step: \"03\",\n          title: \"Design Review\",\n          description: \"Present wireframes and mockups for feedback. Iterate based on stakeholder input to ensure the design meets both user needs and business objectives.\",\n        },\n        {\n          step: \"04\",\n          title: \"Development Cycles\",\n          description: \"Build features incrementally with regular check-ins. Demo working software at the end of each sprint to gather feedback and adjust priorities.\",\n        },\n        {\n          step: \"05\",\n          title: \"Quality Assurance\",\n          description: \"Conduct thorough testing across all scenarios. Identify and resolve issues before they reach production, ensuring a smooth user experience.\",\n        },\n        {\n          step: \"06\",\n          title: \"Deployment & Support\",\n          description: \"Launch to production with monitoring and support. Provide training, documentation, and ongoing assistance to ensure successful adoption.\",\n        },\n      ]}\n      spacing=\"xl\"\n      background=\"dark\"\n    />\n  );\n}","propsSchema":{"heading":{"type":"object","description":"Main heading content","typeLabel":"React.ReactNode","required":false,"maxLength":60},"description":{"type":"object","description":"Description text below heading","typeLabel":"React.ReactNode","required":false,"maxLength":200},"actions":{"type":"array","description":"Array of action configurations for CTA buttons","items":{"type":"object","description":"","fields":{"variant":{"type":"string","description":"","typeLabel":"\"default\" | \"destructive\" | \"outline\" | \"secondary\" | \"ghost\" | \"link\"","required":false},"size":{"type":"string","description":"","typeLabel":"\"default\" | \"sm\" | \"md\" | \"lg\" | \"icon\" | \"icon-sm\" | \"icon-lg\"","required":false},"label":{"type":"object","description":"Button/link label text or ReactNode","typeLabel":"ReactNode","required":false},"icon":{"type":"object","description":"Icon to display (typically before label)","typeLabel":"ReactNode","required":false},"iconAfter":{"type":"object","description":"Icon to display after the label","typeLabel":"ReactNode","required":false},"href":{"type":"string","description":"URL for link behavior","required":false},"onClick":{"type":"object","description":"Click handler for button behavior","typeLabel":"MouseEventHandler","required":false},"className":{"type":"string","description":"Additional CSS classes for the action","required":false},"children":{"type":"object","description":"Custom children (overrides label + icon rendering)","typeLabel":"ReactNode","required":false},"aria-label":{"type":"string","description":"ARIA label for accessibility","required":false},"asButton":{"type":"boolean","description":"Render as a button element instead of an anchor/link","required":false}},"typeLabel":"ActionConfig"},"typeLabel":"ActionConfig[]","required":false},"actionsSlot":{"type":"object","description":"Custom slot for rendering actions (overrides actions array)","typeLabel":"React.ReactNode","required":false},"steps":{"type":"array","description":"Array of step configurations","items":{"type":"object","description":"","fields":{"step":{"type":"object","description":"Step number or label (e.g., \"01\", \"Step 1\")","typeLabel":"React.ReactNode","required":false},"title":{"type":"object","description":"Step title","typeLabel":"React.ReactNode","required":false},"description":{"type":"object","description":"Step description","typeLabel":"React.ReactNode","required":false},"className":{"type":"string","description":"Additional CSS classes for the step item","required":false},"href":{"type":"string","description":"Optional URL","required":false}},"typeLabel":"ProcessStickyStepItem"},"typeLabel":"ProcessStickyStepItem[]","required":true,"minItems":4,"maxItems":8},"stepsSlot":{"type":"object","description":"Custom slot for rendering steps (overrides steps array)","typeLabel":"React.ReactNode","required":false},"className":{"type":"string","description":"Additional CSS classes for the section","required":false},"contentClassName":{"type":"string","description":"Additional CSS classes for the content wrapper","required":false},"headingClassName":{"type":"string","description":"Additional CSS classes for the heading","required":false},"descriptionClassName":{"type":"string","description":"Additional CSS classes for the description","required":false},"actionsClassName":{"type":"string","description":"Additional CSS classes for the actions container","required":false},"stepsClassName":{"type":"string","description":"Additional CSS classes for the steps list","required":false},"stepItemClassName":{"type":"string","description":"Additional CSS classes for each step item","required":false},"background":{"type":"string","description":"Background style for the section","typeLabel":"SectionBackground","required":false},"spacing":{"type":"object","description":"Vertical spacing for the section","fields":{},"typeLabel":"SectionSpacing","required":false},"pattern":{"type":"object","description":"Optional background pattern name or URL","fields":{},"typeLabel":"PatternName","required":false},"patternOpacity":{"type":"number","description":"Pattern overlay opacity (0-1)","required":false},"optixFlowConfig":{"type":"object","description":"OptixFlow image optimization configuration","fields":{"apiKey":{"type":"string","description":"API key for OptixFlow service","required":true},"compression":{"type":"number","description":"Compression level (0-100)","required":false}},"typeLabel":"OptixFlowConfig","required":false},"containerClassName":{"type":"string","description":"Additional CSS classes for the container","required":false},"sectionId":{"type":"string","description":"Optional Section ID","required":false},"steps[].step":{"type":"object","description":""},"steps[].title":{"type":"object","description":"","required":true,"maxLength":60},"steps[].description":{"type":"object","description":"","maxLength":220}},"exampleProps":{"heading":"Delivery Process","description":"A transparent, collaborative approach that keeps you informed throughout the project lifecycle.","actions":[{"label":"Schedule a Call","href":"/contact","variant":"default"},{"label":"View Pricing","href":"/pricing","variant":"outline"}],"steps":[{"step":"01","title":"Project Kickoff","description":"Align on goals, timeline, and success criteria."},{"step":"02","title":"Sprint Planning","description":"Break deliverables into focused sprints prioritised by value."},{"step":"03","title":"Design Review","description":"Present wireframes for feedback and iterate quickly."},{"step":"04","title":"Development Cycles","description":"Build features incrementally with end-of-sprint demos."},{"step":"05","title":"Quality Assurance","description":"Thorough testing across all scenarios before release."},{"step":"06","title":"Deployment & Support","description":"Launch with monitoring, training, and ongoing assistance."}],"spacing":"xl","background":"dark"},"dependencies":["@opensite/ui"],"tags":["process","steps","methodology","workflow","sticky","sidebar","numbered","how-it-works","timeline"],"performance":{},"importantUsageNotes":"Use for a 4-to-8 step linear process where the left column (heading} ${CTA) should stay visible while the user scrolls through steps. No image props exist — this is a text/number-only layout. Keep each step description under 2 sentences. step values are display labels (e.g. '01'); omit to auto-number.","usageRequirements":{"requiredProps":["steps"],"propConstraints":{"heading":{"maxLength":60},"description":{"maxLength":200},"steps":{"required":true,"minItems":4,"maxItems":8},"steps[].step":{"note":"Short step label like '01'. Auto-generated if omitted."},"steps[].title":{"required":true,"maxLength":60},"steps[].description":{"maxLength":220}},"mediaSlots":{}}}},"timestamp":"2026-06-27T20:02:55.863Z"}