[{"data":1,"prerenderedAt":657},["ShallowReactive",2],{"navigation_docs_en":3,"dtpr-schemas-index":287,"-en-icons-shapes":295,"-en-icons-shapes-surround":652},[4,22,26,30,102,152,174,196,226,278,283],{"title":5,"path":6,"stem":7,"children":8},"Getting started","/en/getting-started","en/1.getting-started/0.index",[9,10,14,18],{"title":5,"path":6,"stem":7},{"title":11,"path":12,"stem":13},"MCP quickstart","/en/getting-started/mcp-quickstart","en/1.getting-started/1.mcp-quickstart",{"title":15,"path":16,"stem":17},"REST quickstart","/en/getting-started/rest-quickstart","en/1.getting-started/2.rest-quickstart",{"title":19,"path":20,"stem":21},"UI quickstart","/en/getting-started/ui-quickstart","en/1.getting-started/3.ui-quickstart",{"title":23,"path":24,"stem":25},"Attribution","/en/attribution","en/10.attribution",{"title":27,"path":28,"stem":29},"Cite DTPR for AI","/en/cite","en/11.cite",{"title":31,"path":32,"stem":33,"children":34},"MCP server","/en/mcp","en/2.mcp/0.index",[35,36,40,44,48,98],{"title":31,"path":32,"stem":33},{"title":37,"path":38,"stem":39},"Connecting","/en/mcp/connection","en/2.mcp/1.connection",{"title":41,"path":42,"stem":43},"Envelope","/en/mcp/envelope","en/2.mcp/2.envelope",{"title":45,"path":46,"stem":47},"Resources","/en/mcp/resources","en/2.mcp/3.resources",{"title":49,"path":50,"stem":51,"children":52},"Tools","/en/mcp/tools","en/2.mcp/4.tools/0.index",[53,54,58,62,66,70,74,78,82,86,90,94],{"title":49,"path":50,"stem":51},{"title":55,"path":56,"stem":57},"list_schema_versions","/en/mcp/tools/list-schema-versions","en/2.mcp/4.tools/1.list-schema-versions",{"title":59,"path":60,"stem":61},"MCP tool: resolve_datachain","/en/mcp/tools/resolve-datachain","en/2.mcp/4.tools/10.resolve-datachain",{"title":63,"path":64,"stem":65},"MCP tool: validate_resolved","/en/mcp/tools/validate-resolved","en/2.mcp/4.tools/11.validate-resolved",{"title":67,"path":68,"stem":69},"get_schema","/en/mcp/tools/get-schema","en/2.mcp/4.tools/2.get-schema",{"title":71,"path":72,"stem":73},"list_categories","/en/mcp/tools/list-categories","en/2.mcp/4.tools/3.list-categories",{"title":75,"path":76,"stem":77},"list_elements","/en/mcp/tools/list-elements","en/2.mcp/4.tools/4.list-elements",{"title":79,"path":80,"stem":81},"get_element","/en/mcp/tools/get-element","en/2.mcp/4.tools/5.get-element",{"title":83,"path":84,"stem":85},"get_elements","/en/mcp/tools/get-elements","en/2.mcp/4.tools/6.get-elements",{"title":87,"path":88,"stem":89},"validate_datachain","/en/mcp/tools/validate-datachain","en/2.mcp/4.tools/7.validate-datachain",{"title":91,"path":92,"stem":93},"render_datachain","/en/mcp/tools/render-datachain","en/2.mcp/4.tools/8.render-datachain",{"title":95,"path":96,"stem":97},"get_icon_url","/en/mcp/tools/get-icon-url","en/2.mcp/4.tools/9.get-icon-url",{"title":99,"path":100,"stem":101},"Prompts","/en/mcp/prompts","en/2.mcp/5.prompts",{"title":103,"path":104,"stem":105,"children":106},"REST API (v2)","/en/rest","en/3.rest/0.index",[107,108,112,116,120,124,128,132,136,140,144,148],{"title":103,"path":104,"stem":105},{"title":109,"path":110,"stem":111},"GET /schemas","/en/rest/schemas","en/3.rest/1.schemas",{"title":113,"path":114,"stem":115},"POST /schemas/:version/resolve","/en/rest/resolve","en/3.rest/10.resolve",{"title":117,"path":118,"stem":119},"POST /schemas/:version/validate_resolved","/en/rest/validate-resolved","en/3.rest/11.validate-resolved",{"title":121,"path":122,"stem":123},"GET /schemas/:version/manifest","/en/rest/manifest","en/3.rest/2.manifest",{"title":125,"path":126,"stem":127},"GET /schemas/:version/categories","/en/rest/categories","en/3.rest/3.categories",{"title":129,"path":130,"stem":131},"GET /schemas/:version/elements","/en/rest/elements-list","en/3.rest/4.elements-list",{"title":133,"path":134,"stem":135},"GET /schemas/:version/elements/:element_id","/en/rest/element-detail","en/3.rest/5.element-detail",{"title":137,"path":138,"stem":139},"POST /schemas/:version/validate","/en/rest/validate","en/3.rest/6.validate",{"title":141,"path":142,"stem":143},"Icon routes","/en/rest/icons","en/3.rest/7.icons",{"title":145,"path":146,"stem":147},"Pagination & fields","/en/rest/pagination-and-fields","en/3.rest/8.pagination-and-fields",{"title":149,"path":150,"stem":151},"Errors","/en/rest/errors","en/3.rest/9.errors",{"title":153,"path":154,"stem":155,"children":156},"Icon composition","/en/icons","en/4.icons/0.index",[157,158,162,166,170],{"title":153,"path":154,"stem":155},{"title":159,"path":160,"stem":161},"Shapes","/en/icons/shapes","en/4.icons/1.shapes",{"title":163,"path":164,"stem":165},"Symbols","/en/icons/symbols","en/4.icons/2.symbols",{"title":167,"path":168,"stem":169},"Composed variants","/en/icons/composed-variants","en/4.icons/3.composed-variants",{"title":171,"path":172,"stem":173},"URLs","/en/icons/urls","en/4.icons/4.urls",{"title":175,"path":176,"stem":177,"children":178},"@dtpr/ui","/en/ui","en/5.ui/0.index",[179,180,184,188,192],{"title":175,"path":176,"stem":177},{"title":181,"path":182,"stem":183},"@dtpr/ui/core","/en/ui/core","en/5.ui/1.core",{"title":185,"path":186,"stem":187},"@dtpr/ui/vue","/en/ui/vue","en/5.ui/2.vue",{"title":189,"path":190,"stem":191},"@dtpr/ui/html","/en/ui/html","en/5.ui/3.html",{"title":193,"path":194,"stem":195},"Theming","/en/ui/theming","en/5.ui/4.theming",{"title":197,"path":198,"stem":199,"children":200},"Concepts","/en/concepts","en/6.concepts/0.index",[201,202,206,210,214,218,222],{"title":197,"path":198,"stem":199},{"title":203,"path":204,"stem":205},"Datachains","/en/concepts/datachains","en/6.concepts/1.datachains",{"title":207,"path":208,"stem":209},"Elements & categories","/en/concepts/elements-categories","en/6.concepts/2.elements-categories",{"title":211,"path":212,"stem":213},"Versions & releases","/en/concepts/versions-and-releases","en/6.concepts/3.versions-and-releases",{"title":215,"path":216,"stem":217},"Content hash","/en/concepts/content-hash","en/6.concepts/4.content-hash",{"title":219,"path":220,"stem":221},"Shape contract","/en/concepts/shape-contract","en/6.concepts/5.shape-contract",{"title":223,"path":224,"stem":225},"Subchains","/en/concepts/subchains","en/6.concepts/6.subchains",{"title":227,"path":228,"stem":229,"children":230},"Claude plugin","/en/plugin","en/7.plugin/0.index",[231,232,236,270,274],{"title":227,"path":228,"stem":229},{"title":233,"path":234,"stem":235},"Install","/en/plugin/install","en/7.plugin/1.install",{"title":237,"path":238,"stem":239,"children":240},"Skills","/en/plugin/skills","en/7.plugin/2.skills/0.index",[241,242,246,250,254,258,262,266],{"title":237,"path":238,"stem":239},{"title":243,"path":244,"stem":245},"dtpr-describe-system","/en/plugin/skills/describe-system","en/7.plugin/2.skills/1.describe-system",{"title":247,"path":248,"stem":249},"dtpr-datachain-structure","/en/plugin/skills/datachain-structure","en/7.plugin/2.skills/2.datachain-structure",{"title":251,"path":252,"stem":253},"dtpr-category-audit","/en/plugin/skills/category-audit","en/7.plugin/2.skills/3.category-audit",{"title":255,"path":256,"stem":257},"dtpr-element-design","/en/plugin/skills/element-design","en/7.plugin/2.skills/4.element-design",{"title":259,"path":260,"stem":261},"dtpr-symbol-design","/en/plugin/skills/symbol-design","en/7.plugin/2.skills/5.symbol-design",{"title":263,"path":264,"stem":265},"dtpr-translate","/en/plugin/skills/translate","en/7.plugin/2.skills/6.translate",{"title":267,"path":268,"stem":269},"dtpr-comprehension-audit","/en/plugin/skills/comprehension-audit","en/7.plugin/2.skills/7.comprehension-audit",{"title":271,"path":272,"stem":273},"Research corpus","/en/plugin/research-corpus","en/7.plugin/3.research-corpus",{"title":275,"path":276,"stem":277},"Comprehension rubric","/en/plugin/comprehension-rubric","en/7.plugin/4.comprehension-rubric",{"title":49,"path":279,"stem":280,"children":281},"/en/tools","en/8.tools/0.index",[282],{"title":49,"path":279,"stem":280},{"title":284,"path":285,"stem":286},"Changelog","/en/changelog","en/9.changelog",{"ok":288,"versions":289},true,[290],{"id":291,"status":292,"created_at":293,"content_hash":294},"ai@2026-05-06-beta","beta","2026-05-06T20:23:42.963Z","sha256-2d208111b0c597ff2b38cb1c24168799b0a5ff9290203ebf46c4f7c16a0fcb24",{"id":296,"title":159,"body":297,"description":646,"extension":647,"links":648,"meta":649,"navigation":288,"path":160,"seo":650,"stem":161,"__hash__":651},"docs_en/en/4.icons/1.shapes.md",{"type":298,"value":299,"toc":640},"minimark",[300,310,315,327,405,421,425,431,575,590,594,602,613,617,636],[301,302,304,305,309],"callout",{"type":303},"info","A category's ",[306,307,308],"code",{},"shape"," field picks one of four bundled primitives. Shapes are not version-pinned — they live in the worker code.",[311,312,314],"h2",{"id":313},"the-primitives","The primitives",[316,317,318,319,322,323,326],"p",{},"The compositor bundles four shape paths, all in a ",[306,320,321],{},"36×36"," viewBox with ",[306,324,325],{},"stroke-width=\"2\"",":",[328,329,330,349],"table",{},[331,332,333],"thead",{},[334,335,336,340,346],"tr",{},[337,338,339],"th",{},"Shape",[337,341,342,345],{},[306,343,344],{},"d"," outline",[337,347,348],{},"Where it's used",[350,351,352,366,379,392],"tbody",{},[334,353,354,360,363],{},[355,356,357],"td",{},[306,358,359],{},"circle",[355,361,362],{},"Circle of radius 16 centered at (18, 18).",[355,364,365],{},"Decorative / balanced categories.",[334,367,368,373,376],{},[355,369,370],{},[306,371,372],{},"hexagon",[355,374,375],{},"Pointed-top regular hexagon inscribed in the 36×36 box.",[355,377,378],{},"Default category shape.",[334,380,381,386,389],{},[355,382,383],{},[306,384,385],{},"octagon",[355,387,388],{},"Regular octagon.",[355,390,391],{},"Warning / attention categories.",[334,393,394,399,402],{},[355,395,396],{},[306,397,398],{},"rounded-square",[355,400,401],{},"30×30 square with 3-px corner radius, inset by 3 from each edge.",[355,403,404],{},"Utility / grid categories.",[316,406,407,408,410,411,420],{},"The exact ",[306,409,344],{}," values live in ",[412,413,417],"a",{"href":414,"rel":415},"https://github.com/helpful-places/dtpr/blob/main/api/src/icons/shapes.ts",[416],"nofollow",[306,418,419],{},"api/src/icons/shapes.ts",".",[311,422,424],{"id":423},"how-a-category-picks-a-shape","How a category picks a shape",[316,426,427,428,430],{},"Every category in a schema declares a ",[306,429,308],{}," field on its manifest:",[432,433,438],"pre",{"className":434,"code":435,"language":436,"meta":437,"style":437},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"id\": \"purpose\",\n  \"shape\": \"hexagon\",\n  \"context\": { \"values\": [ { \"id\": \"commercial\", \"color\": \"#0052CC\" } ] }\n}\n","json","",[306,439,440,449,476,495,569],{"__ignoreMap":437},[441,442,445],"span",{"class":443,"line":444},"line",1,[441,446,448],{"class":447},"sMK4o","{\n",[441,450,452,455,459,462,464,467,471,473],{"class":443,"line":451},2,[441,453,454],{"class":447},"  \"",[441,456,458],{"class":457},"spNyl","id",[441,460,461],{"class":447},"\"",[441,463,326],{"class":447},[441,465,466],{"class":447}," \"",[441,468,470],{"class":469},"sfazB","purpose",[441,472,461],{"class":447},[441,474,475],{"class":447},",\n",[441,477,479,481,483,485,487,489,491,493],{"class":443,"line":478},3,[441,480,454],{"class":447},[441,482,308],{"class":457},[441,484,461],{"class":447},[441,486,326],{"class":447},[441,488,466],{"class":447},[441,490,372],{"class":469},[441,492,461],{"class":447},[441,494,475],{"class":447},[441,496,498,500,503,505,507,510,512,516,518,520,523,525,527,530,532,534,536,539,541,544,546,549,551,553,555,558,560,563,566],{"class":443,"line":497},4,[441,499,454],{"class":447},[441,501,502],{"class":457},"context",[441,504,461],{"class":447},[441,506,326],{"class":447},[441,508,509],{"class":447}," {",[441,511,466],{"class":447},[441,513,515],{"class":514},"sBMFI","values",[441,517,461],{"class":447},[441,519,326],{"class":447},[441,521,522],{"class":447}," [",[441,524,509],{"class":447},[441,526,466],{"class":447},[441,528,458],{"class":529},"sbssI",[441,531,461],{"class":447},[441,533,326],{"class":447},[441,535,466],{"class":447},[441,537,538],{"class":469},"commercial",[441,540,461],{"class":447},[441,542,543],{"class":447},",",[441,545,466],{"class":447},[441,547,548],{"class":529},"color",[441,550,461],{"class":447},[441,552,326],{"class":447},[441,554,466],{"class":447},[441,556,557],{"class":469},"#0052CC",[441,559,461],{"class":447},[441,561,562],{"class":447}," }",[441,564,565],{"class":447}," ]",[441,567,568],{"class":447}," }\n",[441,570,572],{"class":443,"line":571},5,[441,573,574],{"class":447},"}\n",[316,576,577,578,583,584,589],{},"You can read a category's shape via ",[412,579,581],{"href":580},"/mcp/tools/list-categories",[306,582,71],{}," or ",[412,585,587],{"href":586},"/rest/categories",[306,588,125],{},". Invalid shape names are rejected at schema build time.",[311,591,593],{"id":592},"serving-shapes-directly","Serving shapes directly",[432,595,600],{"className":596,"code":598,"language":599},[597],"language-text","GET /api/v2/shapes/:shape.svg\n","text",[306,601,598],{"__ignoreMap":437},[316,603,604,605,608,609,420],{},"Returns a bare 36×36 SVG with the shape fragment (stroke ",[306,606,607],{},"#000",", no fill). See ",[412,610,612],{"href":611},"/rest/icons#get-apiv2shapesshapesvg","REST icon routes",[311,614,616],{"id":615},"see-also","See also",[618,619,620,626,631],"ul",{},[621,622,623],"li",{},[412,624,163],{"href":625},"/icons/symbols",[621,627,628],{},[412,629,167],{"href":630},"/icons/composed-variants",[621,632,633],{},[412,634,612],{"href":635},"/rest/icons",[637,638,639],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}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);}",{"title":437,"searchDepth":451,"depth":451,"links":641},[642,643,644,645],{"id":313,"depth":451,"text":314},{"id":423,"depth":451,"text":424},{"id":592,"depth":451,"text":593},{"id":615,"depth":451,"text":616},"The four DTPR shape primitives.","md",null,{},{"title":159,"description":646},"miC3Tly1RuSia9W2M4vz8N42SdypmgiLcMM379r2Fak",[653,655],{"title":153,"path":154,"stem":155,"description":654,"children":-1},"Shape × symbol × variant mental model behind every DTPR icon.",{"title":163,"path":164,"stem":165,"description":656,"children":-1},"Release-pinned symbol SVGs referenced by element.symbol_id.",1779049694169]