[{"data":1,"prerenderedAt":774},["ShallowReactive",2],{"navigation_docs":3,"-icons-urls":194,"-icons-urls-surround":769},[4,22,82,124,146,168,190],{"title":5,"path":6,"stem":7,"children":8},"Getting started","/getting-started","1.getting-started/0.index",[9,10,14,18],{"title":5,"path":6,"stem":7},{"title":11,"path":12,"stem":13},"MCP quickstart","/getting-started/mcp-quickstart","1.getting-started/1.mcp-quickstart",{"title":15,"path":16,"stem":17},"REST quickstart","/getting-started/rest-quickstart","1.getting-started/2.rest-quickstart",{"title":19,"path":20,"stem":21},"UI quickstart","/getting-started/ui-quickstart","1.getting-started/3.ui-quickstart",{"title":23,"path":24,"stem":25,"children":26},"MCP server","/mcp","2.mcp/0.index",[27,28,32,36,40],{"title":23,"path":24,"stem":25},{"title":29,"path":30,"stem":31},"Connecting","/mcp/connection","2.mcp/1.connection",{"title":33,"path":34,"stem":35},"Envelope","/mcp/envelope","2.mcp/2.envelope",{"title":37,"path":38,"stem":39},"Resources","/mcp/resources","2.mcp/3.resources",{"title":41,"path":42,"stem":43,"children":44},"Tools","/mcp/tools","2.mcp/4.tools/0.index",[45,46,50,54,58,62,66,70,74,78],{"title":41,"path":42,"stem":43},{"title":47,"path":48,"stem":49},"list_schema_versions","/mcp/tools/list-schema-versions","2.mcp/4.tools/1.list-schema-versions",{"title":51,"path":52,"stem":53},"get_schema","/mcp/tools/get-schema","2.mcp/4.tools/2.get-schema",{"title":55,"path":56,"stem":57},"list_categories","/mcp/tools/list-categories","2.mcp/4.tools/3.list-categories",{"title":59,"path":60,"stem":61},"list_elements","/mcp/tools/list-elements","2.mcp/4.tools/4.list-elements",{"title":63,"path":64,"stem":65},"get_element","/mcp/tools/get-element","2.mcp/4.tools/5.get-element",{"title":67,"path":68,"stem":69},"get_elements","/mcp/tools/get-elements","2.mcp/4.tools/6.get-elements",{"title":71,"path":72,"stem":73},"validate_datachain","/mcp/tools/validate-datachain","2.mcp/4.tools/7.validate-datachain",{"title":75,"path":76,"stem":77},"render_datachain","/mcp/tools/render-datachain","2.mcp/4.tools/8.render-datachain",{"title":79,"path":80,"stem":81},"get_icon_url","/mcp/tools/get-icon-url","2.mcp/4.tools/9.get-icon-url",{"title":83,"path":84,"stem":85,"children":86},"REST API (v2)","/rest","3.rest/0.index",[87,88,92,96,100,104,108,112,116,120],{"title":83,"path":84,"stem":85},{"title":89,"path":90,"stem":91},"GET /schemas","/rest/schemas","3.rest/1.schemas",{"title":93,"path":94,"stem":95},"GET /schemas/:version/manifest","/rest/manifest","3.rest/2.manifest",{"title":97,"path":98,"stem":99},"GET /schemas/:version/categories","/rest/categories","3.rest/3.categories",{"title":101,"path":102,"stem":103},"GET /schemas/:version/elements","/rest/elements-list","3.rest/4.elements-list",{"title":105,"path":106,"stem":107},"GET /schemas/:version/elements/:element_id","/rest/element-detail","3.rest/5.element-detail",{"title":109,"path":110,"stem":111},"POST /schemas/:version/validate","/rest/validate","3.rest/6.validate",{"title":113,"path":114,"stem":115},"Icon routes","/rest/icons","3.rest/7.icons",{"title":117,"path":118,"stem":119},"Pagination & fields","/rest/pagination-and-fields","3.rest/8.pagination-and-fields",{"title":121,"path":122,"stem":123},"Errors","/rest/errors","3.rest/9.errors",{"title":125,"path":126,"stem":127,"children":128},"Icon composition","/icons","4.icons/0.index",[129,130,134,138,142],{"title":125,"path":126,"stem":127},{"title":131,"path":132,"stem":133},"Shapes","/icons/shapes","4.icons/1.shapes",{"title":135,"path":136,"stem":137},"Symbols","/icons/symbols","4.icons/2.symbols",{"title":139,"path":140,"stem":141},"Composed variants","/icons/composed-variants","4.icons/3.composed-variants",{"title":143,"path":144,"stem":145},"URLs","/icons/urls","4.icons/4.urls",{"title":147,"path":148,"stem":149,"children":150},"@dtpr/ui","/ui","5.ui/0.index",[151,152,156,160,164],{"title":147,"path":148,"stem":149},{"title":153,"path":154,"stem":155},"@dtpr/ui/core","/ui/core","5.ui/1.core",{"title":157,"path":158,"stem":159},"@dtpr/ui/vue","/ui/vue","5.ui/2.vue",{"title":161,"path":162,"stem":163},"@dtpr/ui/html","/ui/html","5.ui/3.html",{"title":165,"path":166,"stem":167},"Theming","/ui/theming","5.ui/4.theming",{"title":169,"path":170,"stem":171,"children":172},"Concepts","/concepts","6.concepts/0.index",[173,174,178,182,186],{"title":169,"path":170,"stem":171},{"title":175,"path":176,"stem":177},"Datachains","/concepts/datachains","6.concepts/1.datachains",{"title":179,"path":180,"stem":181},"Elements & categories","/concepts/elements-categories","6.concepts/2.elements-categories",{"title":183,"path":184,"stem":185},"Versions & releases","/concepts/versions-and-releases","6.concepts/3.versions-and-releases",{"title":187,"path":188,"stem":189},"Content hash","/concepts/content-hash","6.concepts/4.content-hash",{"title":191,"path":192,"stem":193},"Changelog","/changelog","7.changelog",{"id":195,"title":143,"body":196,"description":762,"extension":763,"links":764,"meta":765,"navigation":766,"path":144,"seo":767,"stem":145,"__hash__":768},"docs/4.icons/4.urls.md",{"type":197,"value":198,"toc":754},"minimark",[199,203,208,213,224,305,312,316,323,376,397,401,412,527,539,543,559,563,579,721,725,750],[200,201,143],"h1",{"id":202},"urls",[204,205,207],"callout",{"type":206},"info","Every composed icon has a single canonical URL. You can always derive it from an element id + an optional variant.",[209,210,212],"h2",{"id":211},"the-layout","The layout",[214,215,220],"pre",{"className":216,"code":218,"language":219},[217],"language-text","/api/v2/schemas/:version/elements/:element_id/icon[.\u003Cvariant>].svg\n","text",[221,222,218],"code",{"__ignoreMap":223},"",[225,226,227,243],"table",{},[228,229,230],"thead",{},[231,232,233,237,240],"tr",{},[234,235,236],"th",{},"Form",[234,238,239],{},"Example",[234,241,242],{},"Maps to",[244,245,246,265,282],"tbody",{},[231,247,248,254,259],{},[249,250,251],"td",{},[221,252,253],{},"icon.svg",[249,255,256],{},[221,257,258],{},"/api/v2/schemas/ai@2026-04-16-beta/elements/purpose.example/icon.svg",[249,260,261,264],{},[221,262,263],{},"default"," variant.",[231,266,267,272,277],{},[249,268,269],{},[221,270,271],{},"icon.dark.svg",[249,273,274],{},[221,275,276],{},"/api/v2/schemas/ai@2026-04-16-beta/elements/purpose.example/icon.dark.svg",[249,278,279,264],{},[221,280,281],{},"dark",[231,283,284,289,294],{},[249,285,286],{},[221,287,288],{},"icon.\u003Ccontext>.svg",[249,290,291],{},[221,292,293],{},"/api/v2/schemas/ai@2026-04-16-beta/elements/purpose.example/icon.commercial.svg",[249,295,296,297,300,301,304],{},"Colored variant whose ",[221,298,299],{},"\u003Ccontext>"," matches a category ",[221,302,303],{},"context.value.id",".",[306,307,308,309,304],"p",{},"Full URL: prefix with ",[221,310,311],{},"https://api.dtpr.io",[209,313,315],{"id":314},"discovering-valid-variants","Discovering valid variants",[306,317,318,319,322],{},"Read the element's ",[221,320,321],{},"icon_variants[]"," array:",[214,324,328],{"className":325,"code":326,"language":327,"meta":223,"style":223},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","curl -s https://api.dtpr.io/api/v2/schemas/ai@2026-04-16-beta/elements/purpose.example \\\n  | jq '.element.icon_variants'\n# [ \"default\", \"dark\", \"commercial\", \"civic\" ]\n","bash",[221,329,330,350,369],{"__ignoreMap":223},[331,332,335,339,343,346],"span",{"class":333,"line":334},"line",1,[331,336,338],{"class":337},"sBMFI","curl",[331,340,342],{"class":341},"sfazB"," -s",[331,344,345],{"class":341}," https://api.dtpr.io/api/v2/schemas/ai@2026-04-16-beta/elements/purpose.example",[331,347,349],{"class":348},"sTEyZ"," \\\n",[331,351,353,357,360,363,366],{"class":333,"line":352},2,[331,354,356],{"class":355},"sMK4o","  |",[331,358,359],{"class":337}," jq",[331,361,362],{"class":355}," '",[331,364,365],{"class":341},".element.icon_variants",[331,367,368],{"class":355},"'\n",[331,370,372],{"class":333,"line":371},3,[331,373,375],{"class":374},"sHwdD","# [ \"default\", \"dark\", \"commercial\", \"civic\" ]\n",[306,377,378,379,384,385,388,389,392,393,396],{},"Or use ",[380,381,382],"a",{"href":80},[221,383,79],{}," — it returns both the URL and the full variant list in one call, and emits ",[221,386,387],{},"unknown_variant"," errors with ",[221,390,391],{},"valid_variants"," in ",[221,394,395],{},"fix_hint"," when you ask for an invalid one.",[209,398,400],{"id":399},"validation","Validation",[306,402,403,404,407,408,411],{},"The server rejects ids outside ",[221,405,406],{},"[a-zA-Z0-9_-]"," with HTTP 400 ",[221,409,410],{},"bad_request",":",[214,413,417],{"className":414,"code":415,"language":416,"meta":223,"style":223},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"ok\": false,\n  \"errors\": [\n    { \"code\": \"bad_request\", \"message\": \"Invalid element_id '…'.\", \"fix_hint\": \"Use [a-zA-Z0-9_-] only.\" }\n  ]\n}\n","json",[221,418,419,424,441,455,515,521],{"__ignoreMap":223},[331,420,421],{"class":333,"line":334},[331,422,423],{"class":355},"{\n",[331,425,426,429,433,436,438],{"class":333,"line":352},[331,427,428],{"class":355},"  \"",[331,430,432],{"class":431},"spNyl","ok",[331,434,435],{"class":355},"\"",[331,437,411],{"class":355},[331,439,440],{"class":355}," false,\n",[331,442,443,445,448,450,452],{"class":333,"line":371},[331,444,428],{"class":355},[331,446,447],{"class":431},"errors",[331,449,435],{"class":355},[331,451,411],{"class":355},[331,453,454],{"class":355}," [\n",[331,456,458,461,464,466,468,470,472,474,476,479,481,484,486,488,490,493,495,497,499,501,503,505,507,510,512],{"class":333,"line":457},4,[331,459,460],{"class":355},"    {",[331,462,463],{"class":355}," \"",[331,465,221],{"class":337},[331,467,435],{"class":355},[331,469,411],{"class":355},[331,471,463],{"class":355},[331,473,410],{"class":341},[331,475,435],{"class":355},[331,477,478],{"class":355},",",[331,480,463],{"class":355},[331,482,483],{"class":337},"message",[331,485,435],{"class":355},[331,487,411],{"class":355},[331,489,463],{"class":355},[331,491,492],{"class":341},"Invalid element_id '…'.",[331,494,435],{"class":355},[331,496,478],{"class":355},[331,498,463],{"class":355},[331,500,395],{"class":337},[331,502,435],{"class":355},[331,504,411],{"class":355},[331,506,463],{"class":355},[331,508,509],{"class":341},"Use [a-zA-Z0-9_-] only.",[331,511,435],{"class":355},[331,513,514],{"class":355}," }\n",[331,516,518],{"class":333,"line":517},5,[331,519,520],{"class":355},"  ]\n",[331,522,524],{"class":333,"line":523},6,[331,525,526],{"class":355},"}\n",[306,528,529,530,533,534,536,537,304],{},"Unknown version, element, or variant returns HTTP 404 ",[221,531,532],{},"not_found","; the ",[221,535,387],{}," variant includes the valid list in its ",[221,538,395],{},[209,540,542],{"id":541},"fallback","Fallback",[306,544,545,546,549,550,554,555,558],{},"The route first attempts a pre-baked R2 point-read. On miss, it logs an ",[221,547,548],{},"icon_miss_fallback"," structured event and composes the SVG on the fly with the same pure compositor. The response is ",[551,552,553],"strong",{},"byte-identical"," to the pre-baked path — consumers never see a degraded fallback. Only ",[221,556,557],{},"Cache-Control"," max-age differs (60 s on a beta miss versus 3600 s on a beta hit).",[209,560,562],{"id":561},"mcp-equivalent","MCP equivalent",[306,564,565,567,568,571,572,575,576,578],{},[221,566,79],{}," returns the URL as a ",[551,569,570],{},"relative"," string (",[221,573,574],{},"/api/v2/...","). Prefix ",[221,577,311],{}," when fetching.",[214,580,582],{"className":414,"code":581,"language":416,"meta":223,"style":223},"{\n  \"data\": {\n    \"url\": \"/api/v2/schemas/ai@2026-04-16-beta/elements/purpose.example/icon.dark.svg\",\n    \"content_type\": \"image/svg+xml\",\n    \"variant\": \"dark\",\n    \"valid_variants\": [\"default\", \"dark\", \"commercial\", \"civic\"]\n  }\n}\n",[221,583,584,588,602,623,643,662,710,716],{"__ignoreMap":223},[331,585,586],{"class":333,"line":334},[331,587,423],{"class":355},[331,589,590,592,595,597,599],{"class":333,"line":352},[331,591,428],{"class":355},[331,593,594],{"class":431},"data",[331,596,435],{"class":355},[331,598,411],{"class":355},[331,600,601],{"class":355}," {\n",[331,603,604,607,610,612,614,616,618,620],{"class":333,"line":371},[331,605,606],{"class":355},"    \"",[331,608,609],{"class":337},"url",[331,611,435],{"class":355},[331,613,411],{"class":355},[331,615,463],{"class":355},[331,617,276],{"class":341},[331,619,435],{"class":355},[331,621,622],{"class":355},",\n",[331,624,625,627,630,632,634,636,639,641],{"class":333,"line":457},[331,626,606],{"class":355},[331,628,629],{"class":337},"content_type",[331,631,435],{"class":355},[331,633,411],{"class":355},[331,635,463],{"class":355},[331,637,638],{"class":341},"image/svg+xml",[331,640,435],{"class":355},[331,642,622],{"class":355},[331,644,645,647,650,652,654,656,658,660],{"class":333,"line":517},[331,646,606],{"class":355},[331,648,649],{"class":337},"variant",[331,651,435],{"class":355},[331,653,411],{"class":355},[331,655,463],{"class":355},[331,657,281],{"class":341},[331,659,435],{"class":355},[331,661,622],{"class":355},[331,663,664,666,668,670,672,675,677,679,681,683,685,687,689,691,693,696,698,700,702,705,707],{"class":333,"line":523},[331,665,606],{"class":355},[331,667,391],{"class":337},[331,669,435],{"class":355},[331,671,411],{"class":355},[331,673,674],{"class":355}," [",[331,676,435],{"class":355},[331,678,263],{"class":341},[331,680,435],{"class":355},[331,682,478],{"class":355},[331,684,463],{"class":355},[331,686,281],{"class":341},[331,688,435],{"class":355},[331,690,478],{"class":355},[331,692,463],{"class":355},[331,694,695],{"class":341},"commercial",[331,697,435],{"class":355},[331,699,478],{"class":355},[331,701,463],{"class":355},[331,703,704],{"class":341},"civic",[331,706,435],{"class":355},[331,708,709],{"class":355},"]\n",[331,711,713],{"class":333,"line":712},7,[331,714,715],{"class":355},"  }\n",[331,717,719],{"class":333,"line":718},8,[331,720,526],{"class":355},[209,722,724],{"id":723},"see-also","See also",[726,727,728,734,741,745],"ul",{},[729,730,731],"li",{},[380,732,733],{"href":114},"REST icon routes",[729,735,736],{},[380,737,738,739],{"href":80},"MCP ",[221,740,79],{},[729,742,743],{},[380,744,139],{"href":140},[729,746,747],{},[380,748,749],{"href":122},"REST errors",[751,752,753],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}",{"title":223,"searchDepth":352,"depth":352,"links":755},[756,757,758,759,760,761],{"id":211,"depth":352,"text":212},{"id":314,"depth":352,"text":315},{"id":399,"depth":352,"text":400},{"id":541,"depth":352,"text":542},{"id":561,"depth":352,"text":562},{"id":723,"depth":352,"text":724},"Derive an icon URL from any (version, element, variant) triple.","md",null,{},true,{"title":143,"description":762},"3-w7OGJx_qF_lFPe6n4OGm8aC2LKtFcm5wiwDADeNF4",[770,772],{"title":139,"path":140,"stem":141,"description":771,"children":-1},"default / dark / context-colored variants and the WCAG-inspired innerColor rule.",{"title":147,"path":148,"stem":149,"description":773,"children":-1},"Framework-neutral helpers, Vue components, and SSR HTML renderer for DTPR content.",1776525922453]