{
    "$schema": "https://ui.shadcn.com/schema/registry-item.json",
    "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",
            "content": "<!-- Migration insights view (workspace)\n     The Migration insights tab: churn and growth over time, with Overview and\n     Custom comparison sub-tabs. Empty state without a filter. Reuses the\n     workspace chrome. -->\n\n<div class=\"dp-shell\">\n  <nav class=\"dp-sidebar\">\n    <div class=\"dp-sidebar-head\">\n      <span class=\"dp-sidebar-logo\">\n        <svg viewBox=\"0 0 294 82\" role=\"img\" aria-label=\"Dataprovider.com\"><g fill=\"currentColor\"><path d=\"M121.52.73h7.79c2.98.04 7.48.1 10.6 2.88 2.53 2.29 3.5 5.72 3.5 9.14 0 2.11-.31 3.67-.62 4.71-2.25 7.55-9.08 7.69-11.64 7.72h-9.63zm6.17 5.16v14.37h1.87c3.26-.07 7.76-.24 7.76-7.27 0-1.7-.17-3.39-1.28-4.92-1.66-2.22-4.02-2.18-5.89-2.18zM157.17.73l9.01 24.45h-6.51l-1.21-3.91h-9.01l-1.21 3.91h-6.51L150.8.73zm-3.29 5.82c-.31 1.25-.66 2.53-1 3.78-.52 1.84-1.45 4.71-2.01 6.55h6.2zM162.08.7h18.84v4.85h-6.34v19.64h-6.13V5.55h-6.37zM192.16.73l9.01 24.45h-6.51l-1.21-3.91h-9.01l-1.21 3.91h-6.51L185.79.73zm-3.29 5.82c-.31 1.25-.66 2.53-1 3.78-.52 1.84-1.45 4.71-2.01 6.55h6.2zM121.52 28.82h9.84c4.02 0 7.59 0 9.73 3.08.94 1.39 1.39 3.36 1.39 5.02 0 1.35-.28 2.67-.83 3.81-2.11 4.36-6.62 4.47-9.94 4.54h-4.05v8h-6.13V28.82zm6.13 4.51v7.41h3.67c2.29 0 5.06-.07 5.06-3.84 0-3.57-3.08-3.57-4.85-3.57zM143.84 28.82h11.01c2.56.04 5.75.07 8 2.49 1.14 1.28 1.94 3.22 1.94 5.44 0 4.92-3.36 6.13-5.02 6.75l5.65 9.77h-6.75l-4.85-8.73h-3.84v8.73h-6.13V28.82zm6.13 4.57v6.62h5.06c.87-.03 3.67-.1 3.67-3.36 0-3.12-2.25-3.22-3.53-3.26zM177.79 53.97c-7.76 0-12.16-5.96-12.16-13.02 0-6.62 4.19-12.88 12.05-12.88 1.45 0 2.98.21 4.47.73 7.48 2.6 7.97 10.74 7.97 12.4 0 4.23-1.94 8.04-4.64 10.22-2.39 1.96-5.17 2.55-7.69 2.55m4.22-19.02c-1.04-1.11-2.63-1.8-4.3-1.8-3.71 0-6.06 3.26-6.06 7.69 0 5.82 3.26 7.97 6.13 7.97 2.91 0 6.03-2.08 6.2-7.2.11-2.57-.58-5.17-1.97-6.66M204.9 28.82h6.51l-8.49 24.45h-6.23l-8.38-24.45h6.51l5.06 17.39zM218.22 28.82v24.45h-6.1V28.82zM220.82 28.82h7.79c2.98.04 7.48.1 10.6 2.88 2.53 2.29 3.5 5.72 3.5 9.14 0 2.11-.31 3.67-.62 4.71-2.25 7.55-9.08 7.69-11.64 7.72h-9.63zm6.17 5.16v14.37h1.87c3.26-.07 7.76-.24 7.76-7.27 0-1.7-.17-3.4-1.28-4.92-1.66-2.22-4.02-2.18-5.89-2.18zM244.28 28.82h18.08v4.75h-11.98V38h11.19v4.64h-11.19v5.82h13.06v4.81h-19.15zM265.05 28.82h11.01c2.56.04 5.75.07 8 2.49 1.14 1.28 1.94 3.22 1.94 5.44 0 4.92-3.36 6.13-5.02 6.75l5.65 9.77h-6.75l-4.85-8.73h-3.84v8.73h-6.13V28.82zm6.13 4.57v6.62h5.06c.87-.03 3.67-.1 3.67-3.36 0-3.12-2.25-3.22-3.53-3.26zM287.75 47.49h5.47v5.78h-5.47zM142.79 75.21c-.9 1.42-1.77 2.81-3.71 4.16-1.04.73-3.43 2.15-6.82 2.15-6.48 0-11.71-4.71-11.71-12.99 0-7.24 4.92-12.95 11.85-12.95 2.81 0 5.3.97 7.14 2.42 1.7 1.35 2.49 2.7 3.19 3.91l-4.85 2.42c-.35-.8-.76-1.63-1.84-2.53-1.18-.94-2.36-1.21-3.36-1.21-3.95 0-6.03 3.67-6.03 7.76 0 5.37 2.74 8.04 6.03 8.04 3.19 0 4.47-2.22 5.3-3.64z\"></path><path d=\"M154.48 81.48c-7.76 0-12.16-5.96-12.16-13.02 0-6.62 4.19-12.88 12.05-12.88 1.45 0 2.98.21 4.47.73 7.48 2.6 7.97 10.74 7.97 12.4 0 4.23-1.94 8.04-4.64 10.22-2.39 1.97-5.16 2.55-7.69 2.55m4.22-19.01c-1.04-1.11-2.63-1.8-4.3-1.8-3.71 0-6.06 3.26-6.06 7.69 0 5.82 3.26 7.97 6.13 7.97 2.91 0 6.03-2.08 6.2-7.2.11-2.57-.58-5.17-1.97-6.66M195.27 56.34v24.45h-5.85l.38-17.42.07-2.46-.21.87c-.31 1.39-.35 1.56-.62 2.6l-4.61 16.42h-5.26l-4.43-15.73-1.07-4.36c.1 1.94.1 2.36.21 4.68l.31 15.41h-5.92V56.35h8.94l3.74 13.72.87 3.91c.35-1.7.38-1.87.66-3.01l3.91-14.62h8.88z\"></path><circle cx=\"77.71\" cy=\"71.82\" r=\"9.55\"></circle><path d=\"M34.86.72c5.16 0 9.96.82 14.41 2.47s8.3 4.11 11.55 7.4 5.79 7.4 7.62 12.33 2.75 10.73 2.75 17.38c0 5.83-.75 11.21-2.24 16.15q-2.25 7.395-6.78 12.78c-3.03 3.59-6.8 6.41-11.33 8.46-4.52 2.06-9.85 3.08-15.98 3.08H.33V.72z\"></path></g></svg>\n      </span>\n      <button class=\"dp-sidebar-collapse\" type=\"button\" aria-label=\"Collapse sidebar\">\n        <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"m11 17-5-5 5-5\"></path><path d=\"m18 17-5-5 5-5\"></path></svg>\n      </button>\n    </div>\n    <div class=\"dp-sidebar-nav\">\n      <a class=\"dp-nav-item\" href=\"#\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"m3 9 9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\"></path><path d=\"M9 22V12h6v10\"></path></svg> Home</a>\n      <a class=\"dp-nav-item\" href=\"#\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><circle cx=\"12\" cy=\"12\" r=\"10\"></circle><path d=\"m16 8-6 2-2 6 6-2z\"></path></svg> AI Navigator <span class=\"dp-nav-beta\">Beta</span></a>\n      <div class=\"dp-nav-group\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"m6 9 6 6 6-6\"></path></svg> Library</div>\n      <a class=\"dp-nav-item\" href=\"#\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M4 20h16a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13c0 1.1.9 2 2 2Z\"></path></svg> Files</a>\n      <div class=\"dp-nav-group\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"m6 9 6 6 6-6\"></path></svg> Products</div>\n      <a class=\"dp-nav-item\" data-active href=\"#\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><circle cx=\"11\" cy=\"11\" r=\"7\"></circle><path d=\"m21 21-4.3-4.3\"></path></svg> Search Engine</a>\n    </div>\n    <div class=\"dp-sidebar-foot\">\n      <span class=\"dp-avatar\" data-size=\"sm\" style=\"background: var(--dp-accent-yellow, #ffd200); color: var(--dp-brand-purple, #2d145f);\">CB</span>\n      <span class=\"dp-sidebar-user\"><span class=\"dp-sidebar-user-name\">Christian Branbergen</span><span class=\"dp-sidebar-user-org\">Dataprovider BV</span></span>\n      <button class=\"dp-btn\" type=\"button\" data-variant=\"outline\" data-size=\"sm\">Log out</button>\n    </div>\n  </nav>\n\n  <main class=\"dp-shell-main\" style=\"padding: 0;\">\n    <div class=\"dp-ws\">\n      <section class=\"dp-ws-card\">\n        <div class=\"dp-ws-bar\">\n          <div class=\"dp-ws-title\">\n            <span class=\"dp-ws-title-icon\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M4 20h16a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13c0 1.1.9 2 2 2Z\"></path></svg></span>\n            Untitled dataset\n          </div>\n          <div class=\"dp-ws-actions\">\n            <span class=\"dp-ws-product\">Search Engine</span>\n            <a class=\"dp-ws-link\" href=\"#\">Monitor</a>\n            <a class=\"dp-ws-link\" href=\"#\">Send</a>\n            <span class=\"dp-ws-sep\"></span>\n            <button class=\"dp-ws-textbtn\" type=\"button\">New</button>\n            <button class=\"dp-ws-textbtn\" type=\"button\">Save</button>\n            <button class=\"dp-btn\" type=\"button\" data-variant=\"secondary\">Export</button>\n          </div>\n        </div>\n        <div class=\"dp-ws-filters\">\n          <div class=\"dp-ws-filters-head\">\n            <span class=\"dp-ws-filters-title\">Filters</span>\n            <span class=\"dp-ws-sep\"></span>\n            <span class=\"dp-ws-records\">422,214,685 Records</span>\n            <span class=\"dp-ws-spacer\"></span>\n            <button class=\"dp-ws-datepill\" type=\"button\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><rect width=\"18\" height=\"18\" x=\"3\" y=\"4\" rx=\"2\"></rect><path d=\"M3 10h18M8 2v4M16 2v4\"></path></svg> Jun 2026</button>\n            <button class=\"dp-btn\" type=\"button\" data-variant=\"ai\">Create dataset with AI <svg viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\"><path d=\"M12 3l1.9 4.6L18.5 9l-4.6 1.9L12 15l-1.9-4.1L5.5 9l4.6-1.4z\"></path></svg></button>\n          </div>\n          <div class=\"dp-ws-filter-row\">\n            <select class=\"dp-select\" aria-label=\"Field\"><option>Field</option></select>\n            <select class=\"dp-select\" aria-label=\"Operator\"><option>Select...</option></select>\n            <input class=\"dp-input\" type=\"text\" placeholder=\"Value\" />\n          </div>\n          <div class=\"dp-ws-filter-actions\">\n            <button class=\"dp-btn\" type=\"button\" data-variant=\"secondary\" data-size=\"sm\">Add filter</button>\n            <button class=\"dp-ws-action\" type=\"button\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"m3 16 4 4 4-4\"></path><path d=\"M7 20V4\"></path><path d=\"m21 8-4-4-4 4\"></path><path d=\"M17 4v16\"></path></svg> Rearrange</button>\n            <button class=\"dp-ws-action\" type=\"button\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M3 6h18\"></path><path d=\"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6\"></path><path d=\"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\"></path></svg> Clear All</button>\n            <button class=\"dp-ws-action\" type=\"button\" style=\"margin-left: auto;\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><rect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\"></rect><path d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\"></path></svg> Copy Query</button>\n          </div>\n        </div>\n      </section>\n\n      <section class=\"dp-ws-card\">\n        <div class=\"dp-ws-tabs\" role=\"tablist\">\n          <button class=\"dp-ws-tab\" type=\"button\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><ellipse cx=\"12\" cy=\"5\" rx=\"9\" ry=\"3\"></ellipse><path d=\"M3 5v14a9 3 0 0 0 18 0V5\"></path><path d=\"M3 12a9 3 0 0 0 18 0\"></path></svg> Sheet</button>\n          <button class=\"dp-ws-tab\" type=\"button\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M21 12A9 9 0 1 1 12 3v9z\"></path><path d=\"M16 8a5 5 0 0 0-4-4\"></path></svg> Statistics</button>\n          <button class=\"dp-ws-tab\" type=\"button\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M3 3v18h18\"></path><path d=\"m19 9-5 5-4-4-3 3\"></path></svg> Trends</button>\n          <button class=\"dp-ws-tab\" type=\"button\" data-active><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M3 3v18h18\"></path><rect width=\"3\" height=\"7\" x=\"7\" y=\"11\"></rect><rect width=\"3\" height=\"11\" x=\"13\" y=\"7\"></rect></svg> Migration insights</button>\n          <button class=\"dp-ws-tab\" type=\"button\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M9 3 3 5v16l6-2 6 2 6-2V3l-6 2-6-2z\"></path><path d=\"M9 3v16M15 5v16\"></path></svg> Maps</button>\n        </div>\n\n        <div class=\"dp-churn\">\n          <h2 class=\"dp-churn-title\">Migration insights</h2>\n          <p class=\"dp-churn-sub\">Discover churn and growth movements within your dataset overtime</p>\n          <div class=\"dp-churn-tabs\">\n            <button class=\"dp-churn-tab\" type=\"button\" data-active>Overview</button>\n            <button class=\"dp-churn-tab\" type=\"button\">Custom comparison</button>\n          </div>\n          <div class=\"dp-churn-empty\">\n            <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M21 12A9 9 0 1 1 12 3v9z\"></path><path d=\"M12 3a9 9 0 0 1 9 9h-9z\"></path></svg>\n            In order to view Churn, you must set a filter.\n          </div>\n        </div>\n      </section>\n    </div>\n  </main>\n</div>\n"
        },
        {
            "path": "blocks/churn.css",
            "type": "registry:file",
            "target": "blocks/churn.css",
            "content": "/* Migration insights view (workspace)\n   The Migration insights tab: churn and growth over time, with Overview and\n   Custom comparison sub-tabs. Without a filter it shows an empty state. Reuses\n   the workspace chrome (.dp-ws-*). */\n\n.dp-churn { padding: var(--dp-space-6); }\n\n.dp-churn-title {\n  margin: 0 0 var(--dp-space-1);\n  font-size: var(--dp-text-2xl);\n  font-weight: var(--dp-weight-bold);\n  color: var(--dp-navy);\n}\n\n.dp-churn-sub {\n  margin: 0 0 var(--dp-space-5);\n  font-size: var(--dp-text-sm);\n  color: var(--dp-text-muted);\n}\n\n.dp-churn-tabs {\n  display: flex;\n  gap: var(--dp-space-6);\n  border-bottom: 1px solid var(--dp-border);\n  margin-bottom: var(--dp-space-6);\n}\n\n.dp-churn-tab {\n  appearance: none;\n  border: 0;\n  background: transparent;\n  padding: var(--dp-space-2) 0;\n  font-family: var(--dp-font-sans);\n  font-size: var(--dp-text-sm);\n  font-weight: var(--dp-weight-bold);\n  color: var(--dp-text-muted);\n  border-bottom: 2px solid transparent;\n  margin-bottom: -1px;\n  cursor: pointer;\n}\n\n.dp-churn-tab[data-active] {\n  color: var(--dp-navy);\n  border-bottom-color: var(--dp-navy);\n}\n\n.dp-churn-empty {\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  justify-content: center;\n  gap: var(--dp-space-4);\n  height: 22rem;\n  border-radius: var(--dp-radius-lg);\n  background: var(--dp-surface-subtle);\n  color: var(--dp-text-muted);\n  font-size: var(--dp-text-base);\n}\n\n.dp-churn-empty svg { width: 5rem; height: 5rem; color: var(--dp-neutral-500); }\n"
        }
    ]
}
