{"templateId":"markdown","sharedDataIds":{},"props":{"metadata":{"markdoc":{"tagList":[]},"type":"markdown"},"seo":{"title":"CardOffgrid Component - Usage Guide","siteUrl":"https://xrpl.org","llmstxt":{"hide":false,"title":"XRPL Developer Portal & Documentation","description":"Explore XRP Ledger documentation, blogs, and other blockchain developer resources needed to start building and integrating with the ledger.","details":{"content":"XRP Ledger concepts, use cases, tutorials, references, and other blockchain developer resources. Also, stay up to date with release announcements and more through the XRPL Blog."},"sections":[{"title":"Introduction","description":"A high-level introduction to the XRP Ledger.","includeFiles":["docs/introduction/**/*.*","about/faq.md"],"excludeFiles":["docs/introduction/index.md"]},{"title":"Use Cases","description":"Real-world applications and business scenarios for the XRP Ledger.","includeFiles":["docs/use-cases/**/*.*"],"excludeFiles":["docs/use-cases/index.md","docs/use-cases/defi/index.md"]},{"title":"Agentic Transactions","description":"XRPL AI Starter Kit to help autonomous agents discover, set up, and execute agentic transactions on the XRP Ledger.","includeFiles":["docs/agents/**/*.*"]},{"title":"Concepts","description":"Core concepts including accounts, tokens, transactions, consensus, and more.","includeFiles":["docs/concepts/**/*.*"],"excludeFiles":["docs/concepts/index.md","docs/concepts/decentralized-storage/index.md","docs/concepts/payment-types/index.md"]},{"title":"Tutorials","description":"Step-by-step guides for building on the XRP Ledger in JavaScript, Python, Go, and more.","includeFiles":["docs/tutorials/**/*.*"]},{"title":"References","description":"Protocol specification, transaction types, ledger entries, and API methods.","includeFiles":["docs/references/**/*.*"],"excludeFiles":["docs/references/xrp-api.md","docs/references/data-api.md","docs/references/protocol/index.md","docs/references/protocol/ledger-data/ledger-entry-types/index.md","docs/references/protocol/transactions/index.md","docs/references/protocol/transactions/types/index.md","docs/references/http-websocket-apis/api-conventions/index.md","docs/references/http-websocket-apis/public-api-methods/*/index.md","docs/references/http-websocket-apis/admin-api-methods/*/index.md"]},{"title":"Infrastructure","description":"Install, configure, and troubleshoot xrpld and Clio servers.","includeFiles":["docs/infrastructure/**/*.*"],"excludeFiles":["docs/infrastructure/index.md","docs/infrastructure/*/index.md","docs/infrastructure/installation/build-run-xrpld-in-reporting-mode.md","docs/infrastructure/configuration/data-retention/index.md","docs/infrastructure/configuration/server-modes/index.md"]},{"title":"Blog (2023+)","description":"Recent XRPL Blog posts (showing 2023 and newer).","includeFiles":["blog/2023/**/*.*","blog/2024/**/*.*","blog/2025/**/*.*","blog/2026/**/*.*"]},{"title":"Resources","description":"Developer resources and contribution guidelines.","includeFiles":["resources/**/*.*"]}]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"cardoffgrid-component---usage-guide","__idx":0},"children":["CardOffgrid Component - Usage Guide"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"overview","__idx":1},"children":["Overview"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CardOffgrid"]}," is a feature highlight card component designed to showcase key capabilities, features, or resources. It combines an icon, title, and description in a visually engaging, interactive card format with smooth hover animations."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Use CardOffgrid when:"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Highlighting key features or capabilities"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Creating feature grids or showcases"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Linking to important documentation or resources"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Presenting product/service highlights"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Don't use CardOffgrid for:"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Simple content cards (use standard Bootstrap cards)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Navigation items (use navigation components)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Data display (use tables or data components)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Long-form content (use article/page layouts)"]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"when-to-use-each-variant","__idx":2},"children":["When to Use Each Variant"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"neutral-variant--variantneutral-","__idx":3},"children":["Neutral Variant (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["variant=\"neutral\""]},")"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Use for:"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["General feature highlights"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Standard content cards"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Secondary or supporting features"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["When you want subtle, professional presentation"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Example use cases:"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Documentation sections"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Feature lists"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Service offerings"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Standard informational cards"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"green-variant--variantgreen-","__idx":4},"children":["Green Variant (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["variant=\"green\""]},")"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Use for:"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Primary or featured highlights"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Call-to-action cards"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Important announcements"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Brand-emphasized content"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Example use cases:"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Hero feature cards"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Primary CTAs"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Featured resources"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Branded highlights"]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"content-best-practices","__idx":5},"children":["Content Best Practices"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"title-guidelines","__idx":6},"children":["Title Guidelines"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["✅ ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Do:"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Keep titles concise (1-3 words ideal)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Use line breaks (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\\n"]},") for multi-word titles when needed"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Make titles action-oriented or descriptive"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Examples: \"Onchain Metadata\", \"Token\\nManagement\", \"Cross-Chain\\nBridges\""]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["❌ ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Don't:"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Write long sentences as titles"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Use more than 2 lines"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Include punctuation (periods, commas)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Make titles too generic (\"Feature\", \"Service\")"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"description-guidelines","__idx":7},"children":["Description Guidelines"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["✅ ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Do:"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Write 1-2 sentences (15-25 words ideal)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Focus on benefits or key information"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Use clear, simple language"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Keep descriptions scannable"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["❌ ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Don't:"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Write paragraphs (save for full pages)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Use jargon without context"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Include multiple ideas in one description"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Make descriptions too short (< 10 words) or too long (> 40 words)"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"icon-guidelines","__idx":8},"children":["Icon Guidelines"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["✅ ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Do:"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Use SVG icons for crisp rendering"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Choose icons that represent the feature clearly"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Ensure icons are recognizable at 68×68px"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Use consistent icon style across cards"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["❌ ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Don't:"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Use low-resolution raster images"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Choose overly complex icons"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Mix icon styles within a single grid"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Use icons that don't relate to the content"]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"interaction-patterns","__idx":9},"children":["Interaction Patterns"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"using-onclick-vs-href","__idx":10},"children":["Using ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onClick"]}," vs ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["href"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Use ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onClick"]}," when:"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Triggering JavaScript actions (modals, analytics, state changes)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Opening external links in new tabs"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Performing client-side navigation"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Handling complex interactions"]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"tsx","header":{"controls":{"copy":{}}},"source":"<CardOffgrid\n  variant=\"neutral\"\n  icon={<AnalyticsIcon />}\n  title=\"View Analytics\"\n  description=\"See detailed usage statistics and insights.\"\n  onClick={() => {\n    trackEvent('analytics_viewed');\n    openModal('analytics');\n  }}\n/>\n","lang":"tsx"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Use ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["href"]}," when:"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Navigating to internal pages"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Linking to documentation"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Simple page navigation"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["SEO-friendly links"]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"tsx","header":{"controls":{"copy":{}}},"source":"<CardOffgrid\n  variant=\"green\"\n  icon=\"/icons/docs.svg\"\n  title=\"API\\nReference\"\n  description=\"Complete API documentation and examples.\"\n  href=\"/docs/api\"\n/>\n","lang":"tsx"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"static-presentational-cards","__idx":11},"children":["Static (Presentational) Cards"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Omit both ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onClick"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["href"]}," to render a purely presentational card. It has no"," ","click target, so the component drops every interactive affordance: no pointer"," ","cursor, no hover color wipe, and no pressed state. It renders as a plain ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["<div>"]}," ","and isn't focusable or announced as a control."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use this for cards that only communicate information — e.g. a \"why XRPL\" feature"," ","carousel where none of the cards link anywhere."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"tsx","header":{"controls":{"copy":{}}},"source":"<CardOffgrid\n  variant=\"green\"\n  icon=\"/icons/metadata.svg\"\n  title=\"Onchain Metadata\"\n  description=\"Easily store key asset information.\"\n/>\n","lang":"tsx"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"disabled-state","__idx":12},"children":["Disabled State"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["disabled"]}," when:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Feature is coming soon"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Feature requires authentication"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Feature is temporarily unavailable"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["You want to show but not allow interaction"]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"tsx","header":{"controls":{"copy":{}}},"source":"<CardOffgrid\n  variant=\"neutral\"\n  icon={<BetaIcon />}\n  title=\"Coming\\nSoon\"\n  description=\"This feature will be available in the next release.\"\n  disabled\n/>\n","lang":"tsx"},"children":[]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"layout-best-practices","__idx":13},"children":["Layout Best Practices"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"grid-layouts","__idx":14},"children":["Grid Layouts"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Recommended grid patterns:"]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"tsx","header":{"controls":{"copy":{}}},"source":"// 2-column grid (desktop)\n<div className=\"row\">\n  <div className=\"col-md-6 mb-4\">\n    <CardOffgrid {...props1} />\n  </div>\n  <div className=\"col-md-6 mb-4\">\n    <CardOffgrid {...props2} />\n  </div>\n</div>\n\n// 3-column grid (desktop)\n<div className=\"row\">\n  {cards.map(card => (\n    <div key={card.id} className=\"col-md-4 mb-4\">\n      <CardOffgrid {...card} />\n    </div>\n  ))}\n</div>\n","lang":"tsx"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Spacing:"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Use Bootstrap spacing utilities (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["mb-4"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["mb-5"]},") between cards"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Maintain consistent spacing in grids"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Cards are responsive and stack on mobile automatically"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"single-card-usage","__idx":15},"children":["Single Card Usage"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For hero sections or featured highlights:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"tsx","header":{"controls":{"copy":{}}},"source":"<div className=\"d-flex justify-content-center\">\n  <CardOffgrid\n    variant=\"green\"\n    icon={<FeaturedIcon />}\n    title=\"New Feature\"\n    description=\"Introducing our latest capability...\"\n    href=\"/features/new\"\n  />\n</div>\n","lang":"tsx"},"children":[]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"accessibility-best-practices","__idx":16},"children":["Accessibility Best Practices"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"semantic-html","__idx":17},"children":["Semantic HTML"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The component automatically renders as:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["<button>"]}," when using ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onClick"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["<a>"]}," when using ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["href"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["<div>"]}," when neither is provided (static card — not focusable, not announced as a control)"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This ensures proper semantic meaning for screen readers."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"keyboard-navigation","__idx":18},"children":["Keyboard Navigation"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["✅ ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Always test:"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Tab navigation moves focus to cards"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Enter/Space activates cards"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Focus ring is clearly visible"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Focus order follows logical reading order"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"screen-reader-content","__idx":19},"children":["Screen Reader Content"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["✅ ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Ensure:"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Titles are descriptive and unique"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Descriptions provide context"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Icons have appropriate ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["aria-hidden=\"true\""]}," (handled automatically)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Disabled cards communicate their state"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"color-contrast","__idx":20},"children":["Color Contrast"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["All variants meet WCAG AA standards:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Dark mode: White text on colored backgrounds"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Light mode: Dark text on light backgrounds"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Focus rings provide sufficient contrast"]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"common-patterns","__idx":21},"children":["Common Patterns"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"feature-showcase-grid","__idx":22},"children":["Feature Showcase Grid"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"tsx","header":{"controls":{"copy":{}}},"source":"const features = [\n  {\n    variant: 'green',\n    icon: <TokenIcon />,\n    title: 'Token\\nManagement',\n    description: 'Create and manage fungible and non-fungible tokens.',\n    href: '/docs/tokens'\n  },\n  {\n    variant: 'neutral',\n    icon: <MetadataIcon />,\n    title: 'Onchain\\nMetadata',\n    description: 'Store key asset information using simple APIs.',\n    href: '/docs/metadata'\n  },\n  // ... more features\n];\n\n<div className=\"row\">\n  {features.map((feature, index) => (\n    <div key={index} className=\"col-md-4 mb-4\">\n      <CardOffgrid {...feature} />\n    </div>\n  ))}\n</div>\n","lang":"tsx"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"mixed-variants-for-hierarchy","__idx":23},"children":["Mixed Variants for Hierarchy"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use green variant for primary features, neutral for supporting:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"tsx","header":{"controls":{"copy":{}}},"source":"<div className=\"row\">\n  <div className=\"col-md-6 mb-4\">\n    <CardOffgrid\n      variant=\"green\"  // Primary feature\n      icon={<PrimaryIcon />}\n      title=\"Main Feature\"\n      description=\"Our flagship capability...\"\n      href=\"/feature/main\"\n    />\n  </div>\n  <div className=\"col-md-6 mb-4\">\n    <CardOffgrid\n      variant=\"neutral\"  // Supporting feature\n      icon={<SupportIcon />}\n      title=\"Supporting Feature\"\n      description=\"Complementary capability...\"\n      href=\"/feature/support\"\n    />\n  </div>\n</div>\n","lang":"tsx"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"coming-soon-pattern","__idx":24},"children":["Coming Soon Pattern"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"tsx","header":{"controls":{"copy":{}}},"source":"<CardOffgrid\n  variant=\"neutral\"\n  icon={<ComingSoonIcon />}\n  title=\"Coming\\nSoon\"\n  description=\"This feature is currently in development and will be available soon.\"\n  disabled\n/>\n","lang":"tsx"},"children":[]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"performance-considerations","__idx":25},"children":["Performance Considerations"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"icon-optimization","__idx":26},"children":["Icon Optimization"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["✅ ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Best practices:"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Use SVG React components (inlined) for small icons"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Use optimized SVG files for image icons"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Avoid large raster images"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Consider lazy loading for below-the-fold cards"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"rendering-performance","__idx":27},"children":["Rendering Performance"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Cards are lightweight components"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Hover animations use CSS transforms (GPU-accelerated)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["No heavy JavaScript calculations"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Suitable for grids with 10+ cards"]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"troubleshooting","__idx":28},"children":["Troubleshooting"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"common-issues","__idx":29},"children":["Common Issues"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Card not clickable:"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Ensure ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onClick"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["href"]}," is provided"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Check that ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["disabled"]}," is not set to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["true"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Verify no parent element is blocking pointer events"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Icon not displaying:"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Verify icon path is correct (if using string)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Check icon component is properly imported"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Ensure icon fits within 68×68px bounds"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Hover animation not working:"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Confirm the card has an ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onClick"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["href"]}," — static cards intentionally have no hover animation"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Check browser supports CSS ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["clip-path"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Verify no conflicting CSS is overriding transitions"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Test in different browsers"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Focus ring not visible:"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Ensure keyboard navigation (Tab key)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Check focus ring color contrasts with background"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Verify ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["outline-offset: 2px"]}," is applied"]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"design-system-integration","__idx":30},"children":["Design System Integration"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"color-tokens","__idx":31},"children":["Color Tokens"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["All colors reference ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["styles/_colors.scss"]},":"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Dark mode (default): Uses ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["$gray-500"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["$gray-400"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["$green-300"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["$green-200"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Light mode (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["html.light"]},"): Uses ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["$gray-200"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["$gray-300"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["$green-200"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["$green-300"]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"typography","__idx":32},"children":["Typography"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Title: Booton Light, 32px, -1px letter-spacing"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Description: Booton Light, 18px, -0.5px letter-spacing"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"spacing","__idx":33},"children":["Spacing"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Card padding: 24px"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Content gap: 40px (between title and description)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Icon container: 84×84px"]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"figma-references","__idx":34},"children":["Figma References"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Light Mode Colors"]},": ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://www.figma.com/design/vwDwMJ3mFrAklj5zvZwX5M/Card---OffGrid?node-id=8001-1963&m=dev"},"children":["Figma Design - Light Mode"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Dark Mode Colors"]},": ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://www.figma.com/design/vwDwMJ3mFrAklj5zvZwX5M/Card---OffGrid?node-id=8001-2321&m=dev"},"children":["Figma Design - Dark Mode"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Animation Specs"]},": ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://www.figma.com/design/vwDwMJ3mFrAklj5zvZwX5M/Card---OffGrid?node-id=8007-1096&m=dev"},"children":["Figma Design - Storyboard"]}]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"component-api","__idx":35},"children":["Component API"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"typescript","header":{"controls":{"copy":{}}},"source":"interface CardOffgridProps {\n  /** Color variant: 'neutral' (default) or 'green' */\n  variant?: 'neutral' | 'green';\n  \n  /** Icon element (ReactNode) or image path (string) */\n  icon: React.ReactNode | string;\n  \n  /** Card title - use \\n for line breaks */\n  title: string;\n  \n  /** Card description text (1-2 sentences) */\n  description: string;\n  \n  /** Click handler - renders as <button> */\n  onClick?: () => void;\n  \n  /** Link destination - renders as <a> */\n  href?: string;\n  \n  /** Disabled state - prevents interaction */\n  disabled?: boolean;\n  \n  /** Additional CSS classes */\n  className?: string;\n}\n","lang":"typescript"},"children":[]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"quick-reference","__idx":36},"children":["Quick Reference"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Use Case"},"children":["Use Case"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Variant"},"children":["Variant"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Interaction"},"children":["Interaction"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Standard feature"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["neutral"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["href"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onClick"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Primary feature"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["green"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["href"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onClick"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Coming soon"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["neutral"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["disabled"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Feature grid"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Mix both"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["href"]}," preferred"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Hero section"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["green"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["href"]}]}]}]}]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"examples","__idx":37},"children":["Examples"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["See ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#when-to-use-each-variant"},"children":["When to Use Each Variant"]}," and"," ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#interaction-patterns"},"children":["Interaction Patterns"]}," above for examples."]}]},"headings":[{"value":"CardOffgrid Component - Usage Guide","id":"cardoffgrid-component---usage-guide","depth":1},{"value":"Overview","id":"overview","depth":2},{"value":"When to Use Each Variant","id":"when-to-use-each-variant","depth":2},{"value":"Neutral Variant ( variant=\"neutral\" )","id":"neutral-variant--variantneutral-","depth":3},{"value":"Green Variant ( variant=\"green\" )","id":"green-variant--variantgreen-","depth":3},{"value":"Content Best Practices","id":"content-best-practices","depth":2},{"value":"Title Guidelines","id":"title-guidelines","depth":3},{"value":"Description Guidelines","id":"description-guidelines","depth":3},{"value":"Icon Guidelines","id":"icon-guidelines","depth":3},{"value":"Interaction Patterns","id":"interaction-patterns","depth":2},{"value":"Using onClick vs href","id":"using-onclick-vs-href","depth":3},{"value":"Static (Presentational) Cards","id":"static-presentational-cards","depth":3},{"value":"Disabled State","id":"disabled-state","depth":3},{"value":"Layout Best Practices","id":"layout-best-practices","depth":2},{"value":"Grid Layouts","id":"grid-layouts","depth":3},{"value":"Single Card Usage","id":"single-card-usage","depth":3},{"value":"Accessibility Best Practices","id":"accessibility-best-practices","depth":2},{"value":"Semantic HTML","id":"semantic-html","depth":3},{"value":"Keyboard Navigation","id":"keyboard-navigation","depth":3},{"value":"Screen Reader Content","id":"screen-reader-content","depth":3},{"value":"Color Contrast","id":"color-contrast","depth":3},{"value":"Common Patterns","id":"common-patterns","depth":2},{"value":"Feature Showcase Grid","id":"feature-showcase-grid","depth":3},{"value":"Mixed Variants for Hierarchy","id":"mixed-variants-for-hierarchy","depth":3},{"value":"Coming Soon Pattern","id":"coming-soon-pattern","depth":3},{"value":"Performance Considerations","id":"performance-considerations","depth":2},{"value":"Icon Optimization","id":"icon-optimization","depth":3},{"value":"Rendering Performance","id":"rendering-performance","depth":3},{"value":"Troubleshooting","id":"troubleshooting","depth":2},{"value":"Common Issues","id":"common-issues","depth":3},{"value":"Design System Integration","id":"design-system-integration","depth":2},{"value":"Color Tokens","id":"color-tokens","depth":3},{"value":"Typography","id":"typography","depth":3},{"value":"Spacing","id":"spacing","depth":3},{"value":"Figma References","id":"figma-references","depth":2},{"value":"Component API","id":"component-api","depth":2},{"value":"Quick Reference","id":"quick-reference","depth":2},{"value":"Examples","id":"examples","depth":2}],"frontmatter":{"seo":{"title":"CardOffgrid Component - Usage Guide"}},"editPage":{"to":"https://github.com/XRPLF/xrpl-dev-portal/tree/master/shared/components/CardOffgrid/CardOffgrid.md"},"lastModified":"2026-08-28T16:32:06.000Z","isTranslationFallback":true,"pagePropGetterError":{"message":"","name":""}},"slug":"/es-es/shared/components/cardoffgrid/cardoffgrid-2","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}