{
    "$schema": "https://ui.shadcn.com/schema/registry.json",
    "name": "dataprovider",
    "homepage": "https://ds.dataprovider.dev",
    "items": [
        {
            "name": "tokens",
            "type": "registry:style",
            "title": "Design tokens",
            "description": "CSS custom properties for colour, type, spacing, radius and shadow. The single source of truth for theming. Every component reads these variables.",
            "files": [
                {
                    "path": "tokens.css",
                    "type": "registry:file",
                    "target": "tokens.css"
                }
            ]
        },
        {
            "name": "button",
            "type": "registry:component",
            "title": "Button",
            "description": "Clickable action with brand variants and three sizes. Set the look with data-variant (primary, cta, secondary, outline, ghost, danger) and the size with data-size.",
            "registryDependencies": [
                "tokens"
            ],
            "meta": {
                "category": "Forms",
                "layout": "cluster"
            },
            "files": [
                {
                    "path": "components/button.html",
                    "type": "registry:file",
                    "target": "components/button.html"
                },
                {
                    "path": "components/button.css",
                    "type": "registry:file",
                    "target": "components/button.css"
                }
            ]
        },
        {
            "name": "input",
            "type": "registry:component",
            "title": "Input",
            "description": "Labelled text field with optional hint, error text, sizes and a leading-icon group. Mark an invalid field with aria-invalid.",
            "registryDependencies": [
                "tokens"
            ],
            "meta": {
                "category": "Forms",
                "layout": "form"
            },
            "files": [
                {
                    "path": "components/input.html",
                    "type": "registry:file",
                    "target": "components/input.html"
                },
                {
                    "path": "components/input.css",
                    "type": "registry:file",
                    "target": "components/input.css"
                }
            ]
        },
        {
            "name": "textarea",
            "type": "registry:component",
            "title": "Textarea",
            "description": "Multiline text field that mirrors the input styling. Supports a hint, an error and an invalid state set with aria-invalid.",
            "registryDependencies": [
                "tokens",
                "input"
            ],
            "meta": {
                "category": "Forms",
                "layout": "form"
            },
            "files": [
                {
                    "path": "components/textarea.html",
                    "type": "registry:file",
                    "target": "components/textarea.html"
                },
                {
                    "path": "components/textarea.css",
                    "type": "registry:file",
                    "target": "components/textarea.css"
                }
            ]
        },
        {
            "name": "select",
            "type": "registry:component",
            "title": "Select",
            "description": "Native select styled to match the input, with a custom chevron and three sizes set with data-size.",
            "registryDependencies": [
                "tokens",
                "input"
            ],
            "meta": {
                "category": "Forms",
                "layout": "form"
            },
            "files": [
                {
                    "path": "components/select.html",
                    "type": "registry:file",
                    "target": "components/select.html"
                },
                {
                    "path": "components/select.css",
                    "type": "registry:file",
                    "target": "components/select.css"
                }
            ]
        },
        {
            "name": "checkbox",
            "type": "registry:component",
            "title": "Checkbox",
            "description": "Native checkbox with a custom box and tick. Supports checked, indeterminate and disabled states, with optional helper text.",
            "registryDependencies": [
                "tokens"
            ],
            "meta": {
                "category": "Forms",
                "layout": "stack"
            },
            "files": [
                {
                    "path": "components/checkbox.html",
                    "type": "registry:file",
                    "target": "components/checkbox.html"
                },
                {
                    "path": "components/checkbox.css",
                    "type": "registry:file",
                    "target": "components/checkbox.css"
                }
            ]
        },
        {
            "name": "radio",
            "type": "registry:component",
            "title": "Radio",
            "description": "Native radio with a custom ring and dot. Group options with a shared name and add optional helper text.",
            "registryDependencies": [
                "tokens"
            ],
            "meta": {
                "category": "Forms",
                "layout": "stack"
            },
            "files": [
                {
                    "path": "components/radio.html",
                    "type": "registry:file",
                    "target": "components/radio.html"
                },
                {
                    "path": "components/radio.css",
                    "type": "registry:file",
                    "target": "components/radio.css"
                }
            ]
        },
        {
            "name": "switch",
            "type": "registry:component",
            "title": "Switch",
            "description": "A toggle built from a native checkbox with a sliding track. Use for on and off settings.",
            "registryDependencies": [
                "tokens"
            ],
            "meta": {
                "category": "Forms",
                "layout": "stack"
            },
            "files": [
                {
                    "path": "components/switch.html",
                    "type": "registry:file",
                    "target": "components/switch.html"
                },
                {
                    "path": "components/switch.css",
                    "type": "registry:file",
                    "target": "components/switch.css"
                }
            ]
        },
        {
            "name": "card",
            "type": "registry:component",
            "title": "Card",
            "description": "Surface that groups related content. Variants are set with data-variant (default, subtle, elevated, flat). Compose with header, body and footer sections.",
            "registryDependencies": [
                "tokens",
                "button"
            ],
            "meta": {
                "category": "Data display",
                "layout": "grid"
            },
            "files": [
                {
                    "path": "components/card.html",
                    "type": "registry:file",
                    "target": "components/card.html"
                },
                {
                    "path": "components/card.css",
                    "type": "registry:file",
                    "target": "components/card.css"
                }
            ]
        },
        {
            "name": "table",
            "type": "registry:component",
            "title": "Table",
            "description": "Data table with a sticky-style header, row hover and right-aligned numeric columns. Wrap it to scroll on narrow screens.",
            "registryDependencies": [
                "tokens"
            ],
            "meta": {
                "category": "Data display",
                "layout": "block"
            },
            "files": [
                {
                    "path": "components/table.html",
                    "type": "registry:file",
                    "target": "components/table.html"
                },
                {
                    "path": "components/table.css",
                    "type": "registry:file",
                    "target": "components/table.css"
                }
            ]
        },
        {
            "name": "stat",
            "type": "registry:component",
            "title": "Stat",
            "description": "A single metric with a large value, a label and an optional trend. Set the trend direction with data-tone.",
            "registryDependencies": [
                "tokens"
            ],
            "meta": {
                "category": "Data display",
                "layout": "block"
            },
            "files": [
                {
                    "path": "components/stat.html",
                    "type": "registry:file",
                    "target": "components/stat.html"
                },
                {
                    "path": "components/stat.css",
                    "type": "registry:file",
                    "target": "components/stat.css"
                }
            ]
        },
        {
            "name": "badge",
            "type": "registry:component",
            "title": "Badge",
            "description": "Small status or category label. Tone is set with data-tone and style with data-variant (soft is the default, solid for high emphasis).",
            "registryDependencies": [
                "tokens"
            ],
            "meta": {
                "category": "Data display",
                "layout": "cluster"
            },
            "files": [
                {
                    "path": "components/badge.html",
                    "type": "registry:file",
                    "target": "components/badge.html"
                },
                {
                    "path": "components/badge.css",
                    "type": "registry:file",
                    "target": "components/badge.css"
                }
            ]
        },
        {
            "name": "avatar",
            "type": "registry:component",
            "title": "Avatar",
            "description": "Circular image or initials in three sizes. Stack several in a group for an overlapping row.",
            "registryDependencies": [
                "tokens"
            ],
            "meta": {
                "category": "Data display",
                "layout": "cluster"
            },
            "files": [
                {
                    "path": "components/avatar.html",
                    "type": "registry:file",
                    "target": "components/avatar.html"
                },
                {
                    "path": "components/avatar.css",
                    "type": "registry:file",
                    "target": "components/avatar.css"
                }
            ]
        },
        {
            "name": "alert",
            "type": "registry:component",
            "title": "Alert",
            "description": "Inline message with an icon, title and text. Tone is set with data-tone (info, success, warning, danger).",
            "registryDependencies": [
                "tokens"
            ],
            "meta": {
                "category": "Feedback",
                "layout": "stack"
            },
            "files": [
                {
                    "path": "components/alert.html",
                    "type": "registry:file",
                    "target": "components/alert.html"
                },
                {
                    "path": "components/alert.css",
                    "type": "registry:file",
                    "target": "components/alert.css"
                }
            ]
        },
        {
            "name": "progress",
            "type": "registry:component",
            "title": "Progress",
            "description": "Horizontal progress bar with tone variants and an indeterminate mode for unknown durations. Set the fill width inline.",
            "registryDependencies": [
                "tokens"
            ],
            "meta": {
                "category": "Feedback",
                "layout": "stack"
            },
            "files": [
                {
                    "path": "components/progress.html",
                    "type": "registry:file",
                    "target": "components/progress.html"
                },
                {
                    "path": "components/progress.css",
                    "type": "registry:file",
                    "target": "components/progress.css"
                }
            ]
        },
        {
            "name": "spinner",
            "type": "registry:component",
            "title": "Spinner",
            "description": "Spinning loading indicator in three sizes. Inherits the current colour or takes a neutral tone, and slows under reduced-motion.",
            "registryDependencies": [
                "tokens"
            ],
            "meta": {
                "category": "Feedback",
                "layout": "cluster"
            },
            "files": [
                {
                    "path": "components/spinner.html",
                    "type": "registry:file",
                    "target": "components/spinner.html"
                },
                {
                    "path": "components/spinner.css",
                    "type": "registry:file",
                    "target": "components/spinner.css"
                }
            ]
        },
        {
            "name": "skeleton",
            "type": "registry:component",
            "title": "Skeleton",
            "description": "Animated placeholder shown while content loads. Shapes are set with data-shape (default, text, circle).",
            "registryDependencies": [
                "tokens"
            ],
            "meta": {
                "category": "Feedback",
                "layout": "stack"
            },
            "files": [
                {
                    "path": "components/skeleton.html",
                    "type": "registry:file",
                    "target": "components/skeleton.html"
                },
                {
                    "path": "components/skeleton.css",
                    "type": "registry:file",
                    "target": "components/skeleton.css"
                }
            ]
        },
        {
            "name": "tooltip",
            "type": "registry:component",
            "title": "Tooltip",
            "description": "Label shown on hover or keyboard focus. Position is set with data-side. Add data-open to force it visible.",
            "registryDependencies": [
                "tokens",
                "button"
            ],
            "meta": {
                "category": "Feedback",
                "layout": "tooltip"
            },
            "files": [
                {
                    "path": "components/tooltip.html",
                    "type": "registry:file",
                    "target": "components/tooltip.html"
                },
                {
                    "path": "components/tooltip.css",
                    "type": "registry:file",
                    "target": "components/tooltip.css"
                }
            ]
        },
        {
            "name": "tabs",
            "type": "registry:component",
            "title": "Tabs",
            "description": "Tabbed panels that switch without JavaScript, driven by hidden radios. Supports up to five tabs.",
            "registryDependencies": [
                "tokens"
            ],
            "meta": {
                "category": "Navigation",
                "layout": "block"
            },
            "files": [
                {
                    "path": "components/tabs.html",
                    "type": "registry:file",
                    "target": "components/tabs.html"
                },
                {
                    "path": "components/tabs.css",
                    "type": "registry:file",
                    "target": "components/tabs.css"
                }
            ]
        },
        {
            "name": "breadcrumb",
            "type": "registry:component",
            "title": "Breadcrumb",
            "description": "Trail of links showing the current location. Mark the last item with aria-current. Separators are inline SVG.",
            "registryDependencies": [
                "tokens"
            ],
            "meta": {
                "category": "Navigation",
                "layout": "block"
            },
            "files": [
                {
                    "path": "components/breadcrumb.html",
                    "type": "registry:file",
                    "target": "components/breadcrumb.html"
                },
                {
                    "path": "components/breadcrumb.css",
                    "type": "registry:file",
                    "target": "components/breadcrumb.css"
                }
            ]
        },
        {
            "name": "pagination",
            "type": "registry:component",
            "title": "Pagination",
            "description": "Page navigation with previous and next controls, a current page and an ellipsis for skipped ranges.",
            "registryDependencies": [
                "tokens"
            ],
            "meta": {
                "category": "Navigation",
                "layout": "block"
            },
            "files": [
                {
                    "path": "components/pagination.html",
                    "type": "registry:file",
                    "target": "components/pagination.html"
                },
                {
                    "path": "components/pagination.css",
                    "type": "registry:file",
                    "target": "components/pagination.css"
                }
            ]
        },
        {
            "name": "menu",
            "type": "registry:component",
            "title": "Menu",
            "description": "Dropdown menu with items, a label, a separator and a danger action. Opens on focus within, or toggle data-open from JS.",
            "registryDependencies": [
                "tokens",
                "button"
            ],
            "meta": {
                "category": "Navigation",
                "layout": "menu"
            },
            "files": [
                {
                    "path": "components/menu.html",
                    "type": "registry:file",
                    "target": "components/menu.html"
                },
                {
                    "path": "components/menu.css",
                    "type": "registry:file",
                    "target": "components/menu.css"
                }
            ]
        },
        {
            "name": "separator",
            "type": "registry:component",
            "title": "Separator",
            "description": "Divider between content. Horizontal by default, vertical inside a flex row, or labelled with centred text.",
            "registryDependencies": [
                "tokens"
            ],
            "meta": {
                "category": "Layout & overlay",
                "layout": "block"
            },
            "files": [
                {
                    "path": "components/separator.html",
                    "type": "registry:file",
                    "target": "components/separator.html"
                },
                {
                    "path": "components/separator.css",
                    "type": "registry:file",
                    "target": "components/separator.css"
                }
            ]
        },
        {
            "name": "accordion",
            "type": "registry:component",
            "title": "Accordion",
            "description": "Expandable sections built from native details and summary, so they work without JavaScript. The chevron rotates when open.",
            "registryDependencies": [
                "tokens"
            ],
            "meta": {
                "category": "Layout & overlay",
                "layout": "block"
            },
            "files": [
                {
                    "path": "components/accordion.html",
                    "type": "registry:file",
                    "target": "components/accordion.html"
                },
                {
                    "path": "components/accordion.css",
                    "type": "registry:file",
                    "target": "components/accordion.css"
                }
            ]
        },
        {
            "name": "dialog",
            "type": "registry:component",
            "title": "Dialog",
            "description": "Modal dialog panel with a header, body and footer. Wrap it in the modal backdrop, or place it inside a native dialog element.",
            "registryDependencies": [
                "tokens",
                "button"
            ],
            "meta": {
                "category": "Layout & overlay",
                "layout": "block"
            },
            "files": [
                {
                    "path": "components/dialog.html",
                    "type": "registry:file",
                    "target": "components/dialog.html"
                },
                {
                    "path": "components/dialog.css",
                    "type": "registry:file",
                    "target": "components/dialog.css"
                }
            ]
        },
        {
            "name": "tokens-console",
            "type": "registry:style",
            "title": "Console theme",
            "description": "A [data-theme=\"console\"] override of the tokens for the web app look: Helvetica Neue, purple, blue, gold and trust-grade colours. Wrap a subtree to apply it.",
            "registryDependencies": [
                "tokens"
            ],
            "files": [
                {
                    "path": "tokens-console.css",
                    "type": "registry:file",
                    "target": "tokens-console.css"
                }
            ]
        },
        {
            "name": "sidebar",
            "type": "registry:component",
            "title": "Sidebar",
            "description": "Console navigation with a brand header, grouped items with icons and an active state, and a user block. Pair with the app shell for a full screen.",
            "registryDependencies": [
                "tokens",
                "tokens-console",
                "badge",
                "avatar",
                "button"
            ],
            "meta": {
                "category": "Console",
                "layout": "block",
                "theme": "console"
            },
            "files": [
                {
                    "path": "components/sidebar.html",
                    "type": "registry:file",
                    "target": "components/sidebar.html"
                },
                {
                    "path": "components/sidebar.css",
                    "type": "registry:file",
                    "target": "components/sidebar.css"
                }
            ]
        },
        {
            "name": "grade",
            "type": "registry:component",
            "title": "Trust grade",
            "description": "A letter grade from A to F on a fixed colour scale. Circle by default, large, or a labelled pill.",
            "registryDependencies": [
                "tokens",
                "tokens-console"
            ],
            "meta": {
                "category": "Console",
                "layout": "cluster",
                "theme": "console"
            },
            "files": [
                {
                    "path": "components/grade.html",
                    "type": "registry:file",
                    "target": "components/grade.html"
                },
                {
                    "path": "components/grade.css",
                    "type": "registry:file",
                    "target": "components/grade.css"
                }
            ]
        },
        {
            "name": "login",
            "type": "registry:block",
            "title": "Login screen",
            "description": "A centred sign-in card with an email field, a primary action, a separator and social sign-in buttons.",
            "registryDependencies": [
                "tokens",
                "tokens-console",
                "input",
                "button",
                "separator"
            ],
            "meta": {
                "category": "Blocks",
                "layout": "screen",
                "theme": "console"
            },
            "files": [
                {
                    "path": "blocks/login.html",
                    "type": "registry:file",
                    "target": "blocks/login.html"
                },
                {
                    "path": "blocks/login.css",
                    "type": "registry:file",
                    "target": "blocks/login.css"
                }
            ]
        },
        {
            "name": "dashboard",
            "type": "registry:block",
            "title": "Dashboard",
            "description": "The app home: sidebar, a welcome heading, feature cards and an AI prompt with suggestions.",
            "registryDependencies": [
                "tokens",
                "tokens-console",
                "sidebar",
                "input",
                "badge",
                "avatar",
                "button"
            ],
            "meta": {
                "category": "Blocks",
                "layout": "screen",
                "theme": "console"
            },
            "files": [
                {
                    "path": "blocks/dashboard.html",
                    "type": "registry:file",
                    "target": "blocks/dashboard.html"
                },
                {
                    "path": "blocks/dashboard.css",
                    "type": "registry:file",
                    "target": "blocks/dashboard.css"
                }
            ]
        },
        {
            "name": "files",
            "type": "registry:block",
            "title": "Files",
            "description": "A data screen: sidebar, a hero panel, a search and sort toolbar, a data table and pagination.",
            "registryDependencies": [
                "tokens",
                "tokens-console",
                "sidebar",
                "input",
                "button",
                "pagination",
                "checkbox",
                "menu"
            ],
            "meta": {
                "category": "Blocks",
                "layout": "screen",
                "theme": "console"
            },
            "files": [
                {
                    "path": "blocks/files.html",
                    "type": "registry:file",
                    "target": "blocks/files.html"
                },
                {
                    "path": "blocks/files.css",
                    "type": "registry:file",
                    "target": "blocks/files.css"
                }
            ]
        },
        {
            "name": "workspace",
            "type": "registry:block",
            "title": "Dataset workspace",
            "description": "The shared product workspace used by Search Engine, Reverse DNS, SSL Catalog, Universe and Traffic: a toolbar, a filter builder, view tabs, a data sheet and a record toolbar.",
            "registryDependencies": [
                "tokens",
                "tokens-console",
                "sidebar",
                "button",
                "input",
                "select",
                "avatar"
            ],
            "meta": {
                "category": "Blocks",
                "layout": "screen",
                "theme": "console"
            },
            "files": [
                {
                    "path": "blocks/workspace.html",
                    "type": "registry:file",
                    "target": "blocks/workspace.html"
                },
                {
                    "path": "blocks/workspace.css",
                    "type": "registry:file",
                    "target": "blocks/workspace.css"
                }
            ]
        },
        {
            "name": "recipes",
            "type": "registry:block",
            "title": "Recipes",
            "description": "A card-grid screen with a page header, a large search and category sections of recipe cards. Logos are placeholder tiles to swap for the real brand logo.",
            "registryDependencies": [
                "tokens",
                "tokens-console",
                "sidebar",
                "badge",
                "avatar",
                "button"
            ],
            "meta": {
                "category": "Blocks",
                "layout": "screen",
                "theme": "console"
            },
            "files": [
                {
                    "path": "blocks/recipes.html",
                    "type": "registry:file",
                    "target": "blocks/recipes.html"
                },
                {
                    "path": "blocks/recipes.css",
                    "type": "registry:file",
                    "target": "blocks/recipes.css"
                }
            ]
        },
        {
            "name": "navigator",
            "type": "registry:block",
            "title": "AI Navigator",
            "description": "A centred AI composer: eyebrow, title, gradient divider, a prompt box with an embedded footer and keyboard hint, and suggestion cards.",
            "registryDependencies": [
                "tokens",
                "tokens-console",
                "sidebar",
                "button",
                "avatar"
            ],
            "meta": {
                "category": "Blocks",
                "layout": "screen",
                "theme": "console"
            },
            "files": [
                {
                    "path": "blocks/navigator.html",
                    "type": "registry:file",
                    "target": "blocks/navigator.html"
                },
                {
                    "path": "blocks/navigator.css",
                    "type": "registry:file",
                    "target": "blocks/navigator.css"
                }
            ]
        },
        {
            "name": "account",
            "type": "registry:block",
            "title": "Account profile",
            "description": "A settings screen: two columns of cards with user-info form fields, security and social sign-in setting rows, MCP settings and access tokens.",
            "registryDependencies": [
                "tokens",
                "tokens-console",
                "sidebar",
                "input",
                "checkbox",
                "radio",
                "button",
                "avatar"
            ],
            "meta": {
                "category": "Blocks",
                "layout": "screen",
                "theme": "console"
            },
            "files": [
                {
                    "path": "blocks/account.html",
                    "type": "registry:file",
                    "target": "blocks/account.html"
                },
                {
                    "path": "blocks/account.css",
                    "type": "registry:file",
                    "target": "blocks/account.css"
                }
            ]
        },
        {
            "name": "statistics",
            "type": "registry:block",
            "title": "Dataset statistics",
            "description": "The Statistics tab of the dataset workspace: a chart panel with a chart-type select, a bar chart, a legend and a data table. Shares the workspace chrome.",
            "registryDependencies": [
                "tokens",
                "tokens-console",
                "sidebar",
                "workspace",
                "button",
                "input",
                "select",
                "avatar"
            ],
            "meta": {
                "category": "Blocks",
                "layout": "screen",
                "theme": "console"
            },
            "files": [
                {
                    "path": "blocks/statistics.html",
                    "type": "registry:file",
                    "target": "blocks/statistics.html"
                },
                {
                    "path": "blocks/statistics.css",
                    "type": "registry:file",
                    "target": "blocks/statistics.css"
                }
            ]
        },
        {
            "name": "trends",
            "type": "registry:block",
            "title": "Dataset trends",
            "description": "The Trends tab of the dataset workspace: a line/area chart over time, shown here in the empty state that appears before a filter is set. Shares the workspace chrome.",
            "registryDependencies": [
                "tokens",
                "tokens-console",
                "sidebar",
                "workspace",
                "button",
                "input",
                "select",
                "avatar"
            ],
            "meta": {
                "category": "Blocks",
                "layout": "screen",
                "theme": "console"
            },
            "files": [
                {
                    "path": "blocks/trends.html",
                    "type": "registry:file",
                    "target": "blocks/trends.html"
                },
                {
                    "path": "blocks/trends.css",
                    "type": "registry:file",
                    "target": "blocks/trends.css"
                }
            ]
        },
        {
            "name": "churn",
            "type": "registry:block",
            "title": "Migration insights",
            "description": "The Migration insights tab of the dataset workspace: churn and growth over time with Overview and Custom comparison sub-tabs, shown in the empty state. Shares the workspace chrome.",
            "registryDependencies": [
                "tokens",
                "tokens-console",
                "sidebar",
                "workspace",
                "button",
                "input",
                "select",
                "avatar"
            ],
            "meta": {
                "category": "Blocks",
                "layout": "screen",
                "theme": "console"
            },
            "files": [
                {
                    "path": "blocks/churn.html",
                    "type": "registry:file",
                    "target": "blocks/churn.html"
                },
                {
                    "path": "blocks/churn.css",
                    "type": "registry:file",
                    "target": "blocks/churn.css"
                }
            ]
        },
        {
            "name": "maps",
            "type": "registry:block",
            "title": "Dataset maps",
            "description": "The Maps tab of the dataset workspace: a world map with a domain-density heatmap and zoom controls. Shares the workspace chrome.",
            "registryDependencies": [
                "tokens",
                "tokens-console",
                "sidebar",
                "workspace",
                "button",
                "input",
                "select",
                "avatar"
            ],
            "meta": {
                "category": "Blocks",
                "layout": "screen",
                "theme": "console"
            },
            "files": [
                {
                    "path": "blocks/maps.html",
                    "type": "registry:file",
                    "target": "blocks/maps.html"
                },
                {
                    "path": "blocks/maps.css",
                    "type": "registry:file",
                    "target": "blocks/maps.css"
                }
            ]
        },
        {
            "name": "site-header",
            "type": "registry:component",
            "title": "Site header",
            "description": "Marketing navigation: a white rounded bar with the logo, menu items with dropdown carets, log-in and a gold Contact CTA.",
            "registryDependencies": [
                "tokens",
                "button"
            ],
            "meta": {
                "category": "Marketing",
                "layout": "block"
            },
            "files": [
                {
                    "path": "components/site-header.html",
                    "type": "registry:file",
                    "target": "components/site-header.html"
                },
                {
                    "path": "components/site-header.css",
                    "type": "registry:file",
                    "target": "components/site-header.css"
                }
            ]
        },
        {
            "name": "cta-band",
            "type": "registry:component",
            "title": "CTA band",
            "description": "A call-to-action band with an eyebrow, two-tone heading, a checklist, an avatar group and a gold CTA button.",
            "registryDependencies": [
                "tokens",
                "button",
                "avatar"
            ],
            "meta": {
                "category": "Marketing",
                "layout": "block"
            },
            "files": [
                {
                    "path": "components/cta-band.html",
                    "type": "registry:file",
                    "target": "components/cta-band.html"
                },
                {
                    "path": "components/cta-band.css",
                    "type": "registry:file",
                    "target": "components/cta-band.css"
                }
            ]
        },
        {
            "name": "site-footer",
            "type": "registry:component",
            "title": "Site footer",
            "description": "Marketing footer with link columns, a social column and MCP cards with a New badge.",
            "registryDependencies": [
                "tokens"
            ],
            "meta": {
                "category": "Marketing",
                "layout": "block"
            },
            "files": [
                {
                    "path": "components/site-footer.html",
                    "type": "registry:file",
                    "target": "components/site-footer.html"
                },
                {
                    "path": "components/site-footer.css",
                    "type": "registry:file",
                    "target": "components/site-footer.css"
                }
            ]
        },
        {
            "name": "hero",
            "type": "registry:component",
            "title": "Hero",
            "description": "Marketing hero: a two-tone heading, a subtitle and a tabbed product preview with a floating stat card.",
            "registryDependencies": [
                "tokens"
            ],
            "meta": {
                "category": "Marketing",
                "layout": "block"
            },
            "files": [
                {
                    "path": "components/hero.html",
                    "type": "registry:file",
                    "target": "components/hero.html"
                },
                {
                    "path": "components/hero.css",
                    "type": "registry:file",
                    "target": "components/hero.css"
                }
            ]
        },
        {
            "name": "feature-cards",
            "type": "registry:component",
            "title": "Feature cards",
            "description": "A marketing section: a centred heading and a grid of cards with an icon, title, description and read-more link.",
            "registryDependencies": [
                "tokens",
                "button"
            ],
            "meta": {
                "category": "Marketing",
                "layout": "block"
            },
            "files": [
                {
                    "path": "components/feature-cards.html",
                    "type": "registry:file",
                    "target": "components/feature-cards.html"
                },
                {
                    "path": "components/feature-cards.css",
                    "type": "registry:file",
                    "target": "components/feature-cards.css"
                }
            ]
        },
        {
            "name": "home",
            "type": "registry:block",
            "title": "Home page",
            "description": "A marketing homepage composed from site-header, hero, feature-cards, cta-band and site-footer. A template for building new pages in the Dataprovider style.",
            "registryDependencies": [
                "tokens",
                "site-header",
                "hero",
                "feature-cards",
                "cta-band",
                "site-footer",
                "button",
                "avatar"
            ],
            "meta": {
                "category": "Blocks",
                "layout": "screen"
            },
            "files": [
                {
                    "path": "blocks/home.html",
                    "type": "registry:file",
                    "target": "blocks/home.html"
                },
                {
                    "path": "blocks/home.css",
                    "type": "registry:file",
                    "target": "blocks/home.css"
                }
            ]
        },
        {
            "name": "stats-band",
            "type": "registry:component",
            "title": "Stats band",
            "description": "A row of large headline numbers with labels.",
            "registryDependencies": [
                "tokens"
            ],
            "meta": {
                "category": "Marketing",
                "layout": "block"
            },
            "files": [
                {
                    "path": "components/stats-band.html",
                    "type": "registry:file",
                    "target": "components/stats-band.html"
                },
                {
                    "path": "components/stats-band.css",
                    "type": "registry:file",
                    "target": "components/stats-band.css"
                }
            ]
        },
        {
            "name": "logo-cloud",
            "type": "registry:component",
            "title": "Logo cloud",
            "description": "A trusted-by strip: a label above a row of logos.",
            "registryDependencies": [
                "tokens"
            ],
            "meta": {
                "category": "Marketing",
                "layout": "block"
            },
            "files": [
                {
                    "path": "components/logo-cloud.html",
                    "type": "registry:file",
                    "target": "components/logo-cloud.html"
                },
                {
                    "path": "components/logo-cloud.css",
                    "type": "registry:file",
                    "target": "components/logo-cloud.css"
                }
            ]
        },
        {
            "name": "split-section",
            "type": "registry:component",
            "title": "Split section",
            "description": "A two-column section with text beside a media panel. Add data-reverse to swap sides.",
            "registryDependencies": [
                "tokens",
                "button"
            ],
            "meta": {
                "category": "Marketing",
                "layout": "block"
            },
            "files": [
                {
                    "path": "components/split-section.html",
                    "type": "registry:file",
                    "target": "components/split-section.html"
                },
                {
                    "path": "components/split-section.css",
                    "type": "registry:file",
                    "target": "components/split-section.css"
                }
            ]
        },
        {
            "name": "faq",
            "type": "registry:component",
            "title": "FAQ",
            "description": "A frequently-asked-questions section built on the accordion component.",
            "registryDependencies": [
                "tokens",
                "accordion"
            ],
            "meta": {
                "category": "Marketing",
                "layout": "block"
            },
            "files": [
                {
                    "path": "components/faq.html",
                    "type": "registry:file",
                    "target": "components/faq.html"
                },
                {
                    "path": "components/faq.css",
                    "type": "registry:file",
                    "target": "components/faq.css"
                }
            ]
        },
        {
            "name": "use-case",
            "type": "registry:block",
            "title": "Use case page",
            "description": "A marketing use-case page composed from site-header, split sections, a stats band, an FAQ, a CTA band and site-footer. A second page template in the Dataprovider style.",
            "registryDependencies": [
                "tokens",
                "site-header",
                "split-section",
                "stats-band",
                "faq",
                "accordion",
                "cta-band",
                "site-footer",
                "button",
                "avatar"
            ],
            "meta": {
                "category": "Blocks",
                "layout": "screen"
            },
            "files": [
                {
                    "path": "blocks/use-case.html",
                    "type": "registry:file",
                    "target": "blocks/use-case.html"
                }
            ]
        },
        {
            "name": "team",
            "type": "registry:component",
            "title": "Team",
            "description": "A leadership-team grid with member photos, roles, names and LinkedIn links.",
            "registryDependencies": [
                "tokens"
            ],
            "meta": {
                "category": "Marketing",
                "layout": "block"
            },
            "files": [
                {
                    "path": "components/team.html",
                    "type": "registry:file",
                    "target": "components/team.html"
                },
                {
                    "path": "components/team.css",
                    "type": "registry:file",
                    "target": "components/team.css"
                }
            ]
        },
        {
            "name": "timeline",
            "type": "registry:component",
            "title": "Timeline",
            "description": "A vertical milestone track with alternating entries and a centre line.",
            "registryDependencies": [
                "tokens"
            ],
            "meta": {
                "category": "Marketing",
                "layout": "block"
            },
            "files": [
                {
                    "path": "components/timeline.html",
                    "type": "registry:file",
                    "target": "components/timeline.html"
                },
                {
                    "path": "components/timeline.css",
                    "type": "registry:file",
                    "target": "components/timeline.css"
                }
            ]
        },
        {
            "name": "statement",
            "type": "registry:component",
            "title": "Statement",
            "description": "A two-column editorial section with a large statement and supporting copy.",
            "registryDependencies": [
                "tokens"
            ],
            "meta": {
                "category": "Marketing",
                "layout": "block"
            },
            "files": [
                {
                    "path": "components/statement.html",
                    "type": "registry:file",
                    "target": "components/statement.html"
                },
                {
                    "path": "components/statement.css",
                    "type": "registry:file",
                    "target": "components/statement.css"
                }
            ]
        },
        {
            "name": "contact-form",
            "type": "registry:component",
            "title": "Contact form",
            "description": "A demo-request section with an underline-style form and an expectations rail.",
            "registryDependencies": [
                "tokens",
                "field",
                "button",
                "avatar"
            ],
            "meta": {
                "category": "Marketing",
                "layout": "block"
            },
            "files": [
                {
                    "path": "components/contact-form.html",
                    "type": "registry:file",
                    "target": "components/contact-form.html"
                },
                {
                    "path": "components/contact-form.css",
                    "type": "registry:file",
                    "target": "components/contact-form.css"
                }
            ]
        },
        {
            "name": "about",
            "type": "registry:block",
            "title": "About page",
            "description": "A marketing company page composed from a hero, a statement, a logo cloud, a split section, a timeline, a team grid, a CTA band and site-footer.",
            "registryDependencies": [
                "tokens",
                "site-header",
                "statement",
                "logo-cloud",
                "split-section",
                "timeline",
                "team",
                "cta-band",
                "site-footer",
                "button",
                "avatar"
            ],
            "meta": {
                "category": "Blocks",
                "layout": "screen"
            },
            "files": [
                {
                    "path": "blocks/about.html",
                    "type": "registry:file",
                    "target": "blocks/about.html"
                },
                {
                    "path": "blocks/about.css",
                    "type": "registry:file",
                    "target": "blocks/about.css"
                }
            ]
        },
        {
            "name": "contact",
            "type": "registry:block",
            "title": "Contact page",
            "description": "A marketing contact page composed from site-header, the contact-form section, a logo cloud, a CTA band and site-footer.",
            "registryDependencies": [
                "tokens",
                "field",
                "site-header",
                "contact-form",
                "logo-cloud",
                "cta-band",
                "site-footer",
                "button",
                "avatar"
            ],
            "meta": {
                "category": "Blocks",
                "layout": "screen"
            },
            "files": [
                {
                    "path": "blocks/contact.html",
                    "type": "registry:file",
                    "target": "blocks/contact.html"
                }
            ]
        },
        {
            "name": "data-product",
            "type": "registry:block",
            "title": "Data product page",
            "description": "A marketing product page (Domain data) composed from a split hero, a statement, a feature-cards grid, a reversed split, a stats band, a CTA band and site-footer. The dominant page template on the site.",
            "registryDependencies": [
                "tokens",
                "site-header",
                "split-section",
                "statement",
                "feature-cards",
                "stats-band",
                "cta-band",
                "site-footer",
                "button",
                "avatar"
            ],
            "meta": {
                "category": "Blocks",
                "layout": "screen"
            },
            "files": [
                {
                    "path": "blocks/data-product.html",
                    "type": "registry:file",
                    "target": "blocks/data-product.html"
                }
            ]
        },
        {
            "name": "field",
            "type": "registry:component",
            "title": "Field",
            "description": "An underline-style form field (label plus borderless input) used by the marketing forms.",
            "registryDependencies": [
                "tokens"
            ],
            "meta": {
                "category": "Forms",
                "layout": "form"
            },
            "files": [
                {
                    "path": "components/field.html",
                    "type": "registry:file",
                    "target": "components/field.html"
                },
                {
                    "path": "components/field.css",
                    "type": "registry:file",
                    "target": "components/field.css"
                }
            ]
        },
        {
            "name": "newsletter",
            "type": "registry:component",
            "title": "Newsletter",
            "description": "A two-column subscribe section with benefit copy and a name and email capture form.",
            "registryDependencies": [
                "tokens",
                "field",
                "button"
            ],
            "meta": {
                "category": "Marketing",
                "layout": "block"
            },
            "files": [
                {
                    "path": "components/newsletter.html",
                    "type": "registry:file",
                    "target": "components/newsletter.html"
                },
                {
                    "path": "components/newsletter.css",
                    "type": "registry:file",
                    "target": "components/newsletter.css"
                }
            ]
        },
        {
            "name": "blog-grid",
            "type": "registry:component",
            "title": "Blog grid",
            "description": "A responsive grid of horizontal article cards with a cover image, reading time, title, author and date.",
            "registryDependencies": [
                "tokens"
            ],
            "meta": {
                "category": "Marketing",
                "layout": "block"
            },
            "files": [
                {
                    "path": "components/blog-grid.html",
                    "type": "registry:file",
                    "target": "components/blog-grid.html"
                },
                {
                    "path": "components/blog-grid.css",
                    "type": "registry:file",
                    "target": "components/blog-grid.css"
                }
            ]
        },
        {
            "name": "blog",
            "type": "registry:block",
            "title": "Blog page",
            "description": "A marketing blog index composed from site-header, a hero with a tab bar, category filter chips, the blog-grid article cards, a newsletter section and site-footer.",
            "registryDependencies": [
                "tokens",
                "site-header",
                "blog-grid",
                "newsletter",
                "field",
                "site-footer",
                "button"
            ],
            "meta": {
                "category": "Blocks",
                "layout": "screen"
            },
            "files": [
                {
                    "path": "blocks/blog.html",
                    "type": "registry:file",
                    "target": "blocks/blog.html"
                },
                {
                    "path": "blocks/blog.css",
                    "type": "registry:file",
                    "target": "blocks/blog.css"
                }
            ]
        }
    ]
}
