[{"data":1,"prerenderedAt":940},["ShallowReactive",2],{"navigation_docs_en":3,"dtpr-schemas-index":291,"-en-icons-figma-plugin":307,"-en-icons-figma-plugin-surround":935},[4,22,26,30,102,152,178,200,230,282,287],{"title":5,"path":6,"stem":7,"children":8},"Getting started","\u002Fen\u002Fgetting-started","en\u002F1.getting-started\u002F0.index",[9,10,14,18],{"title":5,"path":6,"stem":7},{"title":11,"path":12,"stem":13},"MCP quickstart","\u002Fen\u002Fgetting-started\u002Fmcp-quickstart","en\u002F1.getting-started\u002F1.mcp-quickstart",{"title":15,"path":16,"stem":17},"REST quickstart","\u002Fen\u002Fgetting-started\u002Frest-quickstart","en\u002F1.getting-started\u002F2.rest-quickstart",{"title":19,"path":20,"stem":21},"UI quickstart","\u002Fen\u002Fgetting-started\u002Fui-quickstart","en\u002F1.getting-started\u002F3.ui-quickstart",{"title":23,"path":24,"stem":25},"Attribution","\u002Fen\u002Fattribution","en\u002F10.attribution",{"title":27,"path":28,"stem":29},"Cite DTPR for AI","\u002Fen\u002Fcite","en\u002F11.cite",{"title":31,"path":32,"stem":33,"children":34},"MCP server","\u002Fen\u002Fmcp","en\u002F2.mcp\u002F0.index",[35,36,40,44,48,98],{"title":31,"path":32,"stem":33},{"title":37,"path":38,"stem":39},"Connecting","\u002Fen\u002Fmcp\u002Fconnection","en\u002F2.mcp\u002F1.connection",{"title":41,"path":42,"stem":43},"Envelope","\u002Fen\u002Fmcp\u002Fenvelope","en\u002F2.mcp\u002F2.envelope",{"title":45,"path":46,"stem":47},"Resources","\u002Fen\u002Fmcp\u002Fresources","en\u002F2.mcp\u002F3.resources",{"title":49,"path":50,"stem":51,"children":52},"Tools","\u002Fen\u002Fmcp\u002Ftools","en\u002F2.mcp\u002F4.tools\u002F0.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","\u002Fen\u002Fmcp\u002Ftools\u002Flist-schema-versions","en\u002F2.mcp\u002F4.tools\u002F1.list-schema-versions",{"title":59,"path":60,"stem":61},"MCP tool: resolve_datachain","\u002Fen\u002Fmcp\u002Ftools\u002Fresolve-datachain","en\u002F2.mcp\u002F4.tools\u002F10.resolve-datachain",{"title":63,"path":64,"stem":65},"MCP tool: validate_resolved","\u002Fen\u002Fmcp\u002Ftools\u002Fvalidate-resolved","en\u002F2.mcp\u002F4.tools\u002F11.validate-resolved",{"title":67,"path":68,"stem":69},"get_schema","\u002Fen\u002Fmcp\u002Ftools\u002Fget-schema","en\u002F2.mcp\u002F4.tools\u002F2.get-schema",{"title":71,"path":72,"stem":73},"list_categories","\u002Fen\u002Fmcp\u002Ftools\u002Flist-categories","en\u002F2.mcp\u002F4.tools\u002F3.list-categories",{"title":75,"path":76,"stem":77},"list_elements","\u002Fen\u002Fmcp\u002Ftools\u002Flist-elements","en\u002F2.mcp\u002F4.tools\u002F4.list-elements",{"title":79,"path":80,"stem":81},"get_element","\u002Fen\u002Fmcp\u002Ftools\u002Fget-element","en\u002F2.mcp\u002F4.tools\u002F5.get-element",{"title":83,"path":84,"stem":85},"get_elements","\u002Fen\u002Fmcp\u002Ftools\u002Fget-elements","en\u002F2.mcp\u002F4.tools\u002F6.get-elements",{"title":87,"path":88,"stem":89},"validate_datachain","\u002Fen\u002Fmcp\u002Ftools\u002Fvalidate-datachain","en\u002F2.mcp\u002F4.tools\u002F7.validate-datachain",{"title":91,"path":92,"stem":93},"render_datachain","\u002Fen\u002Fmcp\u002Ftools\u002Frender-datachain","en\u002F2.mcp\u002F4.tools\u002F8.render-datachain",{"title":95,"path":96,"stem":97},"get_icon_url","\u002Fen\u002Fmcp\u002Ftools\u002Fget-icon-url","en\u002F2.mcp\u002F4.tools\u002F9.get-icon-url",{"title":99,"path":100,"stem":101},"Prompts","\u002Fen\u002Fmcp\u002Fprompts","en\u002F2.mcp\u002F5.prompts",{"title":103,"path":104,"stem":105,"children":106},"REST API (v2)","\u002Fen\u002Frest","en\u002F3.rest\u002F0.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 \u002Fschemas","\u002Fen\u002Frest\u002Fschemas","en\u002F3.rest\u002F1.schemas",{"title":113,"path":114,"stem":115},"POST \u002Fschemas\u002F:version\u002Fresolve","\u002Fen\u002Frest\u002Fresolve","en\u002F3.rest\u002F10.resolve",{"title":117,"path":118,"stem":119},"POST \u002Fschemas\u002F:version\u002Fvalidate_resolved","\u002Fen\u002Frest\u002Fvalidate-resolved","en\u002F3.rest\u002F11.validate-resolved",{"title":121,"path":122,"stem":123},"GET \u002Fschemas\u002F:version\u002Fmanifest","\u002Fen\u002Frest\u002Fmanifest","en\u002F3.rest\u002F2.manifest",{"title":125,"path":126,"stem":127},"GET \u002Fschemas\u002F:version\u002Fcategories","\u002Fen\u002Frest\u002Fcategories","en\u002F3.rest\u002F3.categories",{"title":129,"path":130,"stem":131},"GET \u002Fschemas\u002F:version\u002Felements","\u002Fen\u002Frest\u002Felements-list","en\u002F3.rest\u002F4.elements-list",{"title":133,"path":134,"stem":135},"GET \u002Fschemas\u002F:version\u002Felements\u002F:element_id","\u002Fen\u002Frest\u002Felement-detail","en\u002F3.rest\u002F5.element-detail",{"title":137,"path":138,"stem":139},"POST \u002Fschemas\u002F:version\u002Fvalidate","\u002Fen\u002Frest\u002Fvalidate","en\u002F3.rest\u002F6.validate",{"title":141,"path":142,"stem":143},"Icon routes","\u002Fen\u002Frest\u002Ficons","en\u002F3.rest\u002F7.icons",{"title":145,"path":146,"stem":147},"Pagination & fields","\u002Fen\u002Frest\u002Fpagination-and-fields","en\u002F3.rest\u002F8.pagination-and-fields",{"title":149,"path":150,"stem":151},"Errors","\u002Fen\u002Frest\u002Ferrors","en\u002F3.rest\u002F9.errors",{"title":153,"path":154,"stem":155,"children":156},"Icon composition","\u002Fen\u002Ficons","en\u002F4.icons\u002F0.index",[157,158,162,166,170,174],{"title":153,"path":154,"stem":155},{"title":159,"path":160,"stem":161},"Shapes","\u002Fen\u002Ficons\u002Fshapes","en\u002F4.icons\u002F1.shapes",{"title":163,"path":164,"stem":165},"Symbols","\u002Fen\u002Ficons\u002Fsymbols","en\u002F4.icons\u002F2.symbols",{"title":167,"path":168,"stem":169},"Composed variants","\u002Fen\u002Ficons\u002Fcomposed-variants","en\u002F4.icons\u002F3.composed-variants",{"title":171,"path":172,"stem":173},"URLs","\u002Fen\u002Ficons\u002Furls","en\u002F4.icons\u002F4.urls",{"title":175,"path":176,"stem":177},"Figma plugin","\u002Fen\u002Ficons\u002Ffigma-plugin","en\u002F4.icons\u002F5.figma-plugin",{"title":179,"path":180,"stem":181,"children":182},"@dtpr\u002Fui","\u002Fen\u002Fui","en\u002F5.ui\u002F0.index",[183,184,188,192,196],{"title":179,"path":180,"stem":181},{"title":185,"path":186,"stem":187},"@dtpr\u002Fui\u002Fcore","\u002Fen\u002Fui\u002Fcore","en\u002F5.ui\u002F1.core",{"title":189,"path":190,"stem":191},"@dtpr\u002Fui\u002Fvue","\u002Fen\u002Fui\u002Fvue","en\u002F5.ui\u002F2.vue",{"title":193,"path":194,"stem":195},"@dtpr\u002Fui\u002Fhtml","\u002Fen\u002Fui\u002Fhtml","en\u002F5.ui\u002F3.html",{"title":197,"path":198,"stem":199},"Theming","\u002Fen\u002Fui\u002Ftheming","en\u002F5.ui\u002F4.theming",{"title":201,"path":202,"stem":203,"children":204},"Concepts","\u002Fen\u002Fconcepts","en\u002F6.concepts\u002F0.index",[205,206,210,214,218,222,226],{"title":201,"path":202,"stem":203},{"title":207,"path":208,"stem":209},"Datachains","\u002Fen\u002Fconcepts\u002Fdatachains","en\u002F6.concepts\u002F1.datachains",{"title":211,"path":212,"stem":213},"Elements & categories","\u002Fen\u002Fconcepts\u002Felements-categories","en\u002F6.concepts\u002F2.elements-categories",{"title":215,"path":216,"stem":217},"Versions & releases","\u002Fen\u002Fconcepts\u002Fversions-and-releases","en\u002F6.concepts\u002F3.versions-and-releases",{"title":219,"path":220,"stem":221},"Content hash","\u002Fen\u002Fconcepts\u002Fcontent-hash","en\u002F6.concepts\u002F4.content-hash",{"title":223,"path":224,"stem":225},"Shape contract","\u002Fen\u002Fconcepts\u002Fshape-contract","en\u002F6.concepts\u002F5.shape-contract",{"title":227,"path":228,"stem":229},"Subchains","\u002Fen\u002Fconcepts\u002Fsubchains","en\u002F6.concepts\u002F6.subchains",{"title":231,"path":232,"stem":233,"children":234},"Claude plugin","\u002Fen\u002Fplugin","en\u002F7.plugin\u002F0.index",[235,236,240,274,278],{"title":231,"path":232,"stem":233},{"title":237,"path":238,"stem":239},"Install","\u002Fen\u002Fplugin\u002Finstall","en\u002F7.plugin\u002F1.install",{"title":241,"path":242,"stem":243,"children":244},"Skills","\u002Fen\u002Fplugin\u002Fskills","en\u002F7.plugin\u002F2.skills\u002F0.index",[245,246,250,254,258,262,266,270],{"title":241,"path":242,"stem":243},{"title":247,"path":248,"stem":249},"dtpr-describe-system","\u002Fen\u002Fplugin\u002Fskills\u002Fdescribe-system","en\u002F7.plugin\u002F2.skills\u002F1.describe-system",{"title":251,"path":252,"stem":253},"dtpr-datachain-structure","\u002Fen\u002Fplugin\u002Fskills\u002Fdatachain-structure","en\u002F7.plugin\u002F2.skills\u002F2.datachain-structure",{"title":255,"path":256,"stem":257},"dtpr-category-audit","\u002Fen\u002Fplugin\u002Fskills\u002Fcategory-audit","en\u002F7.plugin\u002F2.skills\u002F3.category-audit",{"title":259,"path":260,"stem":261},"dtpr-element-design","\u002Fen\u002Fplugin\u002Fskills\u002Felement-design","en\u002F7.plugin\u002F2.skills\u002F4.element-design",{"title":263,"path":264,"stem":265},"dtpr-symbol-design","\u002Fen\u002Fplugin\u002Fskills\u002Fsymbol-design","en\u002F7.plugin\u002F2.skills\u002F5.symbol-design",{"title":267,"path":268,"stem":269},"dtpr-translate","\u002Fen\u002Fplugin\u002Fskills\u002Ftranslate","en\u002F7.plugin\u002F2.skills\u002F6.translate",{"title":271,"path":272,"stem":273},"dtpr-comprehension-audit","\u002Fen\u002Fplugin\u002Fskills\u002Fcomprehension-audit","en\u002F7.plugin\u002F2.skills\u002F7.comprehension-audit",{"title":275,"path":276,"stem":277},"Research corpus","\u002Fen\u002Fplugin\u002Fresearch-corpus","en\u002F7.plugin\u002F3.research-corpus",{"title":279,"path":280,"stem":281},"Comprehension rubric","\u002Fen\u002Fplugin\u002Fcomprehension-rubric","en\u002F7.plugin\u002F4.comprehension-rubric",{"title":49,"path":283,"stem":284,"children":285},"\u002Fen\u002Ftools","en\u002F8.tools\u002F0.index",[286],{"title":49,"path":283,"stem":284},{"title":288,"path":289,"stem":290},"Changelog","\u002Fen\u002Fchangelog","en\u002F9.changelog",{"ok":292,"versions":293},true,[294,299,303],{"id":295,"status":296,"created_at":297,"content_hash":298},"ai@2026-05-06-beta","beta","2026-05-06T20:23:42.963Z","sha256-3d1e9bfc4e121900821341c31479d1b689bd2af3b3fe8ef378d128f091d22263",{"id":300,"status":296,"created_at":301,"content_hash":302},"ai@2026-08-12-beta","2026-07-13T16:28:13.504Z","sha256-b0d1df5a150dc90a4d9f561663fc4d4d211f195999cd11d0733cedf9a2afbd2f",{"id":304,"status":296,"created_at":305,"content_hash":306},"dtpr@2026-09-01-beta","2026-08-26T00:00:00.000Z","sha256-4f4d5bd2068d3c66e14084d76319484775946b75f127a1c0451a4fced06ea5f0",{"id":308,"title":175,"body":309,"description":929,"extension":930,"links":931,"meta":932,"navigation":292,"path":176,"seo":933,"stem":177,"__hash__":934},"docs_en\u002Fen\u002F4.icons\u002F5.figma-plugin.md",{"type":310,"value":311,"toc":919},"minimark",[312,326,329,337,342,370,379,382,385,412,418,429,433,436,446,456,467,471,478,535,555,558,622,637,644,648,668,671,741,745,752,767,770,782,786,801,862,873,877,915],[313,314,315,316,320,321,325],"p",{},"The DTPR Figma plugin builds an icon ",[317,318,319],"strong",{},"component library"," directly inside a Figma file, pulling every element and composed icon from the live API at ",[322,323,324],"code",{},"api.dtpr.io",".",[313,327,328],{},"Run it once, publish the result as a Team Library, and your designers get the full DTPR icon set in their Assets panel — without installing anything themselves.",[330,331,333,336],"callout",{"type":332},"warning",[317,334,335],{},"Preview release."," The plugin's download, network, and icon-composition paths are tested, but the document-building step has not yet been verified against a real Figma session. Generate into a scratch file first.",[338,339,341],"h2",{"id":340},"download","Download",[330,343,345,355,356,359,360,359,363,366,367,325],{"type":344},"info",[317,346,347],{},[348,349,351,354],"a",{"href":350},"\u002Ffigma-plugin\u002F0.2.0\u002Fdtpr-figma-plugin.zip",[322,352,353],{},"dtpr-figma-plugin.zip"," (v0.2.0)"," — the built plugin: ",[322,357,358],{},"manifest.json",", ",[322,361,362],{},"dist\u002Fcode.js",[322,364,365],{},"dist\u002Fui.html",", and an install ",[322,368,369],{},"README.txt",[313,371,372,373,378],{},"Sizes and a SHA-256 digest are published at ",[348,374,376],{"href":375},"\u002Ffigma-plugin\u002Fmanifest.json",[322,377,375],{}," if you want to verify what you downloaded.",[338,380,237],{"id":381},"install",[313,383,384],{},"The plugin is not on the Figma Community, so it installs from disk.",[386,387,388,395,401,406],"ol",{},[389,390,391,394],"li",{},[317,392,393],{},"Unzip somewhere permanent."," Figma reads the plugin off disk every time it runs — a Downloads folder you periodically empty will break it.",[389,396,397,400],{},[317,398,399],{},"Open the Figma desktop app."," Browser Figma cannot load local plugins.",[389,402,403],{},[317,404,405],{},"Plugins → Development → Import plugin from manifest…",[389,407,408,409,411],{},"Select ",[322,410,358],{}," from the unzipped folder.",[313,413,414,415,325],{},"Run it from ",[317,416,417],{},"Plugins → Development → DTPR Icon Library",[330,419,420,421,424,425,428],{"type":344},"The plugin declares ",[322,422,423],{},"https:\u002F\u002Fapi.dtpr.io"," under ",[322,426,427],{},"networkAccess"," in its manifest, which is the only domain it can reach. It sends no data and uses no credentials — every DTPR endpoint it touches is public and read-only.",[338,430,432],{"id":431},"what-it-generates","What it generates",[313,434,435],{},"A new page per schema version, one section per category, in schema order:",[437,438,443],"pre",{"className":439,"code":441,"language":442},[440],"language-text","Page  \"DTPR Icons — ai@2026-08-24-beta\"\n └ Frame \"purpose\"                          category section\n    ├ Text  \"Purpose\"                       category name + description\n    ├ ComponentSet \"purpose\u002Faccessibility\"\n    │   ├ Component \"Theme=light\"\n    │   │   └ Frame \"icon\" → \"shape\" + \"symbol\"\n    │   └ Component \"Theme=dark\"\n    └ Text  \"Accessibility\"                 optional caption\n","text",[322,444,441],{"__ignoreMap":445},"",[313,447,448,449,452,453,325],{},"For ",[322,450,451],{},"ai@2026-08-24-beta"," that's ",[317,454,455],{},"137 elements across 14 categories, 468 icons",[313,457,458,459,462,463,325],{},"Each component carries its element description in Figma's ",[322,460,461],{},"description"," field, so the plain-language meaning shows up in the Assets panel and the instance inspector. Each node is also stamped with plugin data recording its element id, schema version, and ",[348,464,466],{"href":465},"\u002Fconcepts\u002Fcontent-hash","content hash",[338,468,470],{"id":469},"variants-become-component-sets","Variants become component sets",[313,472,473,474,477],{},"The API exposes an element's icons as a flat list of tokens on ",[322,475,476],{},"icon_variants[]",":",[437,479,483],{"className":480,"code":481,"language":482,"meta":445,"style":445},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","[\"default\", \"dark\", \"vendor\", \"vendor.dark\"]\n","json",[322,484,485],{"__ignoreMap":445},[486,487,490,494,497,501,503,506,509,512,514,516,518,521,523,525,527,530,532],"span",{"class":488,"line":489},"line",1,[486,491,493],{"class":492},"sMK4o","[",[486,495,496],{"class":492},"\"",[486,498,500],{"class":499},"sfazB","default",[486,502,496],{"class":492},[486,504,505],{"class":492},",",[486,507,508],{"class":492}," \"",[486,510,511],{"class":499},"dark",[486,513,496],{"class":492},[486,515,505],{"class":492},[486,517,508],{"class":492},[486,519,520],{"class":499},"vendor",[486,522,496],{"class":492},[486,524,505],{"class":492},[486,526,508],{"class":492},[486,528,529],{"class":499},"vendor.dark",[486,531,496],{"class":492},[486,533,534],{"class":492},"]\n",[313,536,537,538,541,542,545,546,549,550,554],{},"Those are really two independent axes — a ",[317,539,540],{},"context"," (the category's ",[322,543,544],{},"element_context"," value) and a ",[317,547,548],{},"theme"," (light or dark). See ",[348,551,553],{"href":552},"\u002Ficons\u002Fcomposed-variants","composed variants"," for how the API composes them.",[313,556,557],{},"The plugin splits each token back apart and rebuilds it as a Figma component set with matching variant properties:",[559,560,561,574],"table",{},[562,563,564],"thead",{},[565,566,567,571],"tr",{},[568,569,570],"th",{},"API token",[568,572,573],{},"Figma variant",[575,576,577,589,600,611],"tbody",{},[565,578,579,584],{},[580,581,582],"td",{},[322,583,500],{},[580,585,586],{},[322,587,588],{},"Context=default, Theme=light",[565,590,591,595],{},[580,592,593],{},[322,594,511],{},[580,596,597],{},[322,598,599],{},"Context=default, Theme=dark",[565,601,602,606],{},[580,603,604],{},[322,605,520],{},[580,607,608],{},[322,609,610],{},"Context=vendor, Theme=light",[565,612,613,617],{},[580,614,615],{},[322,616,529],{},[580,618,619],{},[322,620,621],{},"Context=vendor, Theme=dark",[313,623,624,625,628,629,632,633,636],{},"Only the axis that actually varies gets named. Most elements have just light and dark, so they get a plain ",[322,626,627],{},"Theme=light"," \u002F ",[322,630,631],{},"Theme=dark"," property rather than a ",[322,634,635],{},"Context"," property with one value.",[330,638,639,640,325],{"type":344},"SVG import flattens to vector nodes, so the shape and symbol are not independently recolorable after generation. Use the theme and context variants for color rather than restyling the vectors — that keeps the icons faithful to the ",[348,641,643],{"href":642},"\u002Fconcepts\u002Fshape-contract","shape contract",[338,645,647],{"id":646},"build-time-and-rate-limits","Build time and rate limits",[313,649,650,651,654,655,659,660,663,664,667],{},"A full build is ",[317,652,653],{},"468 icon requests"," plus metadata, against an API that allows ",[348,656,658],{"href":657},"\u002Frest\u002Ferrors#rate-limiting","1200 icon requests per minute",". The whole set therefore fits inside one window and downloads in a single pass. The plugin still identifies itself with a ",[322,661,662],{},"DTPR-Client"," header so it gets its own rate-limit bucket, honours ",[322,665,666],{},"Retry-After"," on a 429, and lets a single failed icon drop just that variant rather than the whole element.",[313,669,670],{},"The download phase is no longer the bottleneck — it is bounded by network latency rather than by pacing, and the plugin's estimate line reflects that. The remaining time is Figma building the components. Two options cut the request count down further when you only need a refresh:",[559,672,673,686],{},[562,674,675],{},[565,676,677,680,683],{},[568,678,679],{},"Option",[568,681,682],{},"Requests",[568,684,685],{},"Effect",[575,687,688,702,713,730],{},[565,689,690,696,699],{},[580,691,692],{},[693,694,695],"em",{},"(none)",[580,697,698],{},"468",[580,700,701],{},"Every context and both themes.",[565,703,704,707,710],{},[580,705,706],{},"Light theme only",[580,708,709],{},"234",[580,711,712],{},"Skips every dark-theme icon.",[565,714,715,718,721],{},[580,716,717],{},"Default context only",[580,719,720],{},"274",[580,722,723,724,359,726,729],{},"Skips per-context icons (",[322,725,520],{},[322,727,728],{},"identifiable",", …).",[565,731,732,735,738],{},[580,733,734],{},"Both",[580,736,737],{},"137",[580,739,740],{},"One icon per element.",[338,742,744],{"id":743},"publishing-to-your-team","Publishing to your team",[313,746,747,748,751],{},"The plugin is a ",[317,749,750],{},"generator",", not something every designer needs. The intended workflow:",[386,753,754,757,764],{},[389,755,756],{},"One person runs the plugin in an empty Figma file.",[389,758,759,760,763],{},"That file is published as a Team Library (",[317,761,762],{},"Assets → Library → Publish",").",[389,765,766],{},"Everyone else enables the library and drags icons from their Assets panel.",[313,768,769],{},"Consumers never install the plugin. Re-run it when a new schema version ships, then re-publish.",[330,771,772,773,776,777,781],{"type":332},"DTPR ships beta schema versions regularly. A generated library is a ",[317,774,775],{},"snapshot"," — the page name and each component's plugin data record which version it came from. Check ",[348,778,780],{"href":779},"\u002Fconcepts\u002Fversions-and-releases","versions and releases"," before assuming a published library is current.",[338,783,785],{"id":784},"build-from-source","Build from source",[313,787,788,789,797,798,325],{},"The plugin lives in the ",[348,790,794],{"href":791,"rel":792},"https:\u002F\u002Fgithub.com\u002FHelpful-Places\u002Fdtpr\u002Ftree\u002Fmain\u002Ffigma-plugin",[793],"nofollow",[322,795,796],{},"Helpful-Places\u002Fdtpr"," repository under ",[322,799,800],{},"figma-plugin\u002F",[437,802,806],{"className":803,"code":804,"language":805,"meta":445,"style":445},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","pnpm install\npnpm --filter @dtpr\u002Ffigma-plugin build      # → dist\u002Fcode.js + dist\u002Fui.html\npnpm --filter @dtpr\u002Ffigma-plugin dev        # rebuild on change\npnpm --filter @dtpr\u002Ffigma-plugin test\n","bash",[322,807,808,817,835,850],{"__ignoreMap":445},[486,809,810,814],{"class":488,"line":489},[486,811,813],{"class":812},"sBMFI","pnpm",[486,815,816],{"class":499}," install\n",[486,818,820,822,825,828,831],{"class":488,"line":819},2,[486,821,813],{"class":812},[486,823,824],{"class":499}," --filter",[486,826,827],{"class":499}," @dtpr\u002Ffigma-plugin",[486,829,830],{"class":499}," build",[486,832,834],{"class":833},"sHwdD","      # → dist\u002Fcode.js + dist\u002Fui.html\n",[486,836,838,840,842,844,847],{"class":488,"line":837},3,[486,839,813],{"class":812},[486,841,824],{"class":499},[486,843,827],{"class":499},[486,845,846],{"class":499}," dev",[486,848,849],{"class":833},"        # rebuild on change\n",[486,851,853,855,857,859],{"class":488,"line":852},4,[486,854,813],{"class":812},[486,856,824],{"class":499},[486,858,827],{"class":499},[486,860,861],{"class":499}," test\n",[313,863,864,865,868,869,872],{},"Import ",[322,866,867],{},"figma-plugin\u002Fmanifest.json"," in Figma instead of the downloaded copy, then use ",[317,870,871],{},"Plugins → Development → Hot reload plugin"," to pick up changes.",[338,874,876],{"id":875},"related","Related",[878,879,880,886,896,903],"ul",{},[389,881,882,885],{},[348,883,171],{"href":884},"\u002Ficons\u002Furls"," — the icon URL scheme the plugin fetches.",[389,887,888,890,891,359,893,895],{},[348,889,167],{"href":552}," — where ",[322,892,500],{},[322,894,511],{},", and context colors come from.",[389,897,898,902],{},[348,899,901],{"href":900},"\u002Frest\u002Ficons","REST: icon routes"," — the HTTP surface underneath.",[389,904,905,914],{},[348,906,908,910,911],{"href":907},"\u002Fui\u002Fvue",[322,909,179],{}," ",[322,912,913],{},"DtprIcon"," — the same icons rendered in a web app instead.",[916,917,918],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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 .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}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}",{"title":445,"searchDepth":819,"depth":819,"links":920},[921,922,923,924,925,926,927,928],{"id":340,"depth":819,"text":341},{"id":381,"depth":819,"text":237},{"id":431,"depth":819,"text":432},{"id":469,"depth":819,"text":470},{"id":646,"depth":819,"text":647},{"id":743,"depth":819,"text":744},{"id":784,"depth":819,"text":785},{"id":875,"depth":819,"text":876},"Generate a DTPR icon component library in Figma from the live API, then publish it as a Team Library.","md",null,{},{"title":175,"description":929},"68drEbooI_8eEkbkTBVPa5SIsr8KI9CpzOlkYFF1jDU",[936,938],{"title":171,"path":172,"stem":173,"description":937,"children":-1},"Derive an icon URL from any (version, element, variant) triple.",{"title":179,"path":180,"stem":181,"description":939,"children":-1},"Framework-neutral helpers, Vue components, and SSR HTML renderer for DTPR content.",1787765037099]