{"id":125147,"date":"2026-07-31T12:51:45","date_gmt":"2026-07-31T12:51:45","guid":{"rendered":"https:\/\/make.wordpress.org\/core\/?p=125147"},"modified":"2026-07-31T17:58:13","modified_gmt":"2026-07-31T17:58:13","slug":"design-system-theming-in-wordpress-7-1","status":"publish","type":"post","link":"https:\/\/make.wordpress.org\/core\/2026\/07\/31\/design-system-theming-in-wordpress-7-1\/","title":{"rendered":"Design System Theming in WordPress 7.1"},"content":{"rendered":"<p class=\"wp-block-paragraph\">WordPress 7.1 will include foundational support for theming design aspects of <span tabindex='0' class='glossary-item-container'>admin<span class='glossary-item-hidden-content'><span class='glossary-item-header'>admin<\/span> <span class='glossary-item-description'>(and super admin)<\/span><\/span><\/span> interface components, including color, roundness, and cursor pointers for interactive controls. The background and purpose behind these new features were shared previously in <a href=\"https:\/\/make.wordpress.org\/core\/2026\/07\/07\/merge-proposal-design-system-theming\/\">Merge Proposal: Design System Theming<\/a>. This post aims to provide information about what is included with WordPress 7.1.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Design Tokens in the <code>wp-theme<\/code> stylesheet<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A new <code>wp-theme<\/code> stylesheet will be registered by default and is available as a dependency for plugins. When enqueued, the stylesheet includes a full set of semantic design tokens formatted as <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/CSS\/Guides\/Cascading_variables\/Using_custom_properties\">CSS custom properties (variables)<\/a> that can be referenced in WordPress or <span tabindex='0' class='glossary-item-container'>plugin<span class='glossary-item-hidden-content'><span class='glossary-item-header'>Plugin<\/span> <span class='glossary-item-description'>A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory <a href=\"https:\/\/wordpress.org\/plugins\/\">https:\/\/wordpress.org\/plugins\/<\/a> or can be cost-based plugin from a third-party.<\/span><\/span><\/span> styles that are building user interfaces for the wp-admin dashboard. Design tokens can be used in place of hard-coded values to keep styles in sync across related <span tabindex='0' class='glossary-item-container'>UI<span class='glossary-item-hidden-content'><span class='glossary-item-header'>UI<\/span> <span class='glossary-item-description'>User interface<\/span><\/span><\/span> components, for aspects such as color, typography, spacing, and more. When paired with the <a href=\"#theme-provider\" data-type=\"internal\" data-id=\"#theme-provider\">ThemeProvider<\/a>, design tokens automatically inherit aspects of color and roundness for that area of a page.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Typically, design tokens would be used in the implementation of common WordPress UI components, and a plugin would use those components instead of interfacing with the design tokens directly in their own styles. But the design tokens are generally available for both WordPress-internal styling as well as a plugin\u2019s unique use-cases so that styles can be applied consistently.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The following example demonstrates a hypothetical component for a simple card layout. In the <span tabindex='0' class='glossary-item-container'>block<span class='glossary-item-hidden-content'><span class='glossary-item-header'>Block<\/span> <span class='glossary-item-description'>Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience.<\/span><\/span><\/span> editor or site editor, you should use <a href=\"https:\/\/wordpress.github.io\/gutenberg\/?path=\/docs\/design-system-components-card--docs\">the <code>Card<\/code> React component<\/a> instead.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"css\" class=\"language-css\">.card {\n\tbackground-color: var(--wpds-color-background-surface-neutral-strong);\n\tcolor: var(--wpds-color-foreground-content-neutral);\n\tborder: var(--wpds-border-width-xs) solid var(--wpds-color-stroke-surface-neutral-weak);\n\tborder-radius: var(--wpds-border-radius-lg);\n\tpadding: var(--wpds-dimension-padding-2xl);\n}<\/code><\/pre>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-0e47273b wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image aligncenter size-full\"><a href=\"https:\/\/make.wordpress.org\/core\/files\/2026\/07\/localhost_50240__path_docs_design-system-theme-theme-provider-example-application-docs-4.png\"><img loading=\"lazy\" decoding=\"async\" width=\"380\" height=\"122\" data-attachment-id=\"125158\" data-permalink=\"https:\/\/make.wordpress.org\/core\/2026\/07\/31\/design-system-theming-in-wordpress-7-1\/localhost_50240__path_docs_design-system-theme-theme-provider-example-application-docs-4\/#main\" data-orig-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/07\/localhost_50240__path_docs_design-system-theme-theme-provider-example-application-docs-4.png\" data-orig-size=\"380,122\" data-comments-opened=\"1\" data-image-meta='{\"aperture\":\"0\",\"credit\":\"\",\"camera\":\"\",\"caption\":\"\",\"created_timestamp\":\"0\",\"copyright\":\"\",\"focal_length\":\"0\",\"iso\":\"0\",\"shutter_speed\":\"0\",\"title\":\"\",\"orientation\":\"0\",\"alt\":\"\"}' data-image-title=\"localhost_50240__path=_docs_design-system-theme-theme-provider-example-application&amp;#8211;docs (4)\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/07\/localhost_50240__path_docs_design-system-theme-theme-provider-example-application-docs-4.png\" src=\"https:\/\/make.wordpress.org\/core\/files\/2026\/07\/localhost_50240__path_docs_design-system-theme-theme-provider-example-application-docs-4.png\" alt=\"Screenshot of the card component described in the caption\" class=\"wp-image-125158\" srcset=\"https:\/\/make.wordpress.org\/core\/files\/2026\/07\/localhost_50240__path_docs_design-system-theme-theme-provider-example-application-docs-4.png 380w, https:\/\/make.wordpress.org\/core\/files\/2026\/07\/localhost_50240__path_docs_design-system-theme-theme-provider-example-application-docs-4-300x96.png 300w\" sizes=\"auto, (max-width: 380px) 100vw, 380px\"><\/a><figcaption class=\"wp-element-caption\">An example card component inheriting ThemeProvider settings with a light gray background<\/figcaption><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image aligncenter size-full\"><a href=\"https:\/\/make.wordpress.org\/core\/files\/2026\/07\/localhost_50240__path_docs_design-system-theme-theme-provider-example-application-docs-7.png\"><img loading=\"lazy\" decoding=\"async\" width=\"380\" height=\"122\" data-attachment-id=\"125160\" data-permalink=\"https:\/\/make.wordpress.org\/core\/2026\/07\/31\/design-system-theming-in-wordpress-7-1\/localhost_50240__path_docs_design-system-theme-theme-provider-example-application-docs-7\/#main\" data-orig-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/07\/localhost_50240__path_docs_design-system-theme-theme-provider-example-application-docs-7.png\" data-orig-size=\"380,122\" data-comments-opened=\"1\" data-image-meta='{\"aperture\":\"0\",\"credit\":\"\",\"camera\":\"\",\"caption\":\"\",\"created_timestamp\":\"0\",\"copyright\":\"\",\"focal_length\":\"0\",\"iso\":\"0\",\"shutter_speed\":\"0\",\"title\":\"\",\"orientation\":\"0\",\"alt\":\"\"}' data-image-title=\"localhost_50240__path=_docs_design-system-theme-theme-provider-example-application&amp;#8211;docs (7)\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/07\/localhost_50240__path_docs_design-system-theme-theme-provider-example-application-docs-7.png\" src=\"https:\/\/make.wordpress.org\/core\/files\/2026\/07\/localhost_50240__path_docs_design-system-theme-theme-provider-example-application-docs-7.png\" alt=\"Screenshot of the card component described in the caption\" class=\"wp-image-125160\" srcset=\"https:\/\/make.wordpress.org\/core\/files\/2026\/07\/localhost_50240__path_docs_design-system-theme-theme-provider-example-application-docs-7.png 380w, https:\/\/make.wordpress.org\/core\/files\/2026\/07\/localhost_50240__path_docs_design-system-theme-theme-provider-example-application-docs-7-300x96.png 300w\" sizes=\"auto, (max-width: 380px) 100vw, 380px\"><\/a><figcaption class=\"wp-element-caption\">An example card component inheriting ThemeProvider settings with a dark blue background and a more pronounced border radius<\/figcaption><\/figure>\n<\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">To learn more about design tokens, refer to the <a href=\"https:\/\/developer.wordpress.org\/block-editor\/reference-guides\/packages\/packages-theme\/#design-tokens\">\u201cDesign Tokens\u201d section<\/a> of the <code>@wordpress\/theme<\/code> package documentation. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For more information about the available token options, a <a href=\"https:\/\/github.com\/WordPress\/gutenberg\/blob\/wp\/7.1\/packages\/theme\/docs\/tokens.md\">design system token reference<\/a> describes the structure, purpose, and name of each token.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Design tokens are used as the basis for all components in <a href=\"https:\/\/developer.wordpress.org\/block-editor\/reference-guides\/packages\/packages-ui\/\">the <code>@wordpress\/ui<\/code> React component library<\/a>, and is used in <a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/78397\">applying the user\u2019s preferred color scheme to the Site Editor in WordPress 7.1<\/a>. As a foundational piece, this will be expanded in subsequent WordPress releases to apply to more of the admin interface, which is detailed in <a href=\"https:\/\/make.wordpress.org\/core\/2026\/07\/07\/merge-proposal-design-system-theming\/\">the merge proposal<\/a>.<\/p>\n\n\n\n<h2 id=\"theme-provider\" class=\"wp-block-heading\">ThemeProvider <span tabindex='0' class='glossary-item-container'>React<span class='glossary-item-hidden-content'><span class='glossary-item-header'>React<\/span> <span class='glossary-item-description'>React is a JavaScript library that makes it easy to reason about, construct, and maintain stateless and stateful user interfaces.\r<a href=\"https:\/\/reactjs.org\/\">https:\/\/reactjs.org<\/a><\/span><\/span><\/span> component in the <code>wp-theme<\/code> script handle<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A new <code>wp-theme<\/code> <span tabindex='0' class='glossary-item-container'>JavaScript<span class='glossary-item-hidden-content'><span class='glossary-item-header'>JavaScript<\/span> <span class='glossary-item-description'>JavaScript or JS is an object-oriented computer programming language commonly used to create interactive effects within web browsers. WordPress makes extensive use of JS for a better user experience. While PHP is executed on the server, JS executes within a user\u2019s browser.\r<a href=\"https:\/\/www.javascript.com\/\">https:\/\/www.javascript.com<\/a><\/span><\/span><\/span> script handle will be registered by default and is available as a dependency for plugins. The <code>wp-theme<\/code> script provides a single <code>ThemeProvider<\/code> React component that can be used to wrap content in an area of the page to override the default design token values that are provide from the <code>wp-theme<\/code> stylesheet.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"typescript\" class=\"language-typescript\">import { ThemeProvider } from '@wordpress\/theme';\nimport { Card } from '@wordpress\/ui';\n\nfunction Application() {\n\treturn (\n\t\t&lt;ThemeProvider\n\t\t\tcolor={ { primary: '#3858e9', background: '#11004d' } }\n\t\t\tcornerRadius=\"pronounced\"\n\t\t&gt;\n\t\t\t&lt;Card.Root&gt;\n\t\t\t\t&lt;Card.Content&gt;\n\t\t\t\t\tWordPress is designed for everyone. We believe great\n\t\t\t\t\tsoftware should work with minimum set up,\n\t\t\t\t\temphasizing accessibility, performance, security,\n\t\t\t\t\tand ease of use.\n\t\t\t\t&lt;\/Card.Content&gt;\n\t\t\t&lt;\/Card.Root&gt;\n\t\t&lt;\/ThemeProvider&gt;\n\t);\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Given a pair of <code>primary<\/code> and <code>background<\/code> seed color values, the component internally generates a color ramp which is visually harmonious and provides contrast between elements, such as between foreground and background, or between background and border. While the color algorithm aims for accessible contrast targets, it is not possible to guarantee for every color combination, so due diligence is still required to verify its outputs for a given set of colors.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>ThemeProvider<\/code> currently includes five options for customizing the behavior of a themed section of a page:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th><strong>Prop<\/strong><\/th><th><strong>Description<\/strong><\/th><\/tr><\/thead><tbody><tr><td><code>color.primary<\/code><\/td><td>The primary seed color to use for the theme. Accepts a fully opaque sRGB-parseable string: a hex value (e.g.\u00a0<code>#3858e9<\/code>), an\u00a0<code>rgb()<\/code>\/<code>rgba()<\/code>\u00a0string, or a <span tabindex='0' class='glossary-item-container'>CSS<span class='glossary-item-hidden-content'><span class='glossary-item-header'>CSS<\/span> <span class='glossary-item-description'>Cascading Style Sheets.<\/span><\/span><\/span> named color (e.g.\u00a0<code>'blue'<\/code>).<\/td><\/tr><tr><td><code>color.background<\/code><\/td><td>The background seed color to use for the theme. Accepts a fully opaque sRGB-parseable string: a hex value (e.g.\u00a0<code>#f8f8f8<\/code>), an\u00a0<code>rgb()<\/code>\/<code>rgba()<\/code>\u00a0string, or a CSS named color (e.g.\u00a0<code>'blue'<\/code>).<\/td><\/tr><tr><td><code>cursor.control<\/code><\/td><td>The cursor style for interactive controls that are not links (e.g. buttons, checkboxes, and toggles). By default, it inherits from the parent\u00a0<code>ThemeProvider<\/code>, and falls back to the prebuilt default (<code>pointer<\/code>).<\/td><\/tr><tr><td><code>cornerRadius<\/code><\/td><td>Overall roundness preset for the theme subtree:\u00a0<code>none<\/code>\u00a0(square corners),\u00a0<code>subtle<\/code>,\u00a0<code>moderate<\/code>, or\u00a0<code>pronounced<\/code>\u00a0(most rounded). By default, it inherits from the parent\u00a0<code>ThemeProvider<\/code>, and falls back to the prebuilt default (<code>subtle<\/code>).<\/td><\/tr><tr><td><code>isRoot<\/code><\/td><td>When a ThemeProvider is the root provider, it will apply its theming settings also to the root document element (e.g. the <code>html<\/code> element). Render at most one root provider per document.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><code>ThemeProvider<\/code> can be used by plugin authors to express their unique brand identity while appearing consistent within the broader WordPress admin interface.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">To learn more about using the <code>ThemeProvider<\/code> component, refer to the <a href=\"https:\/\/developer.wordpress.org\/block-editor\/reference-guides\/packages\/packages-theme\/#theme-provider\">\u201cTheme Provider\u201d section<\/a> of the <code>@wordpress\/theme<\/code> package documentation.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Further Reading<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/make.wordpress.org\/core\/2026\/07\/07\/merge-proposal-design-system-theming\/\">Merge Proposal: Design System Theming<\/a> (Make\/<span tabindex='0' class='glossary-item-container'>Core<span class='glossary-item-hidden-content'><span class='glossary-item-header'>Core<\/span> <span class='glossary-item-description'>Core is the set of software required to run WordPress. The Core Development Team builds WordPress.<\/span><\/span><\/span> post)<\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/WordPress\/gutenberg\/issues\/71196#top\">Design System: Support for admin redesign<\/a> (<span tabindex='0' class='glossary-item-container'>GitHub<span class='glossary-item-hidden-content'><span class='glossary-item-header'>GitHub<\/span> <span class='glossary-item-description'>GitHub is a website that offers online implementation of git repositories that can easily be shared, copied and modified by other developers. Public repositories are free to host, private repositories require a paid subscription. GitHub introduced the concept of the \u2018pull request\u2019 where code changes done in branches by contributors can be reviewed and discussed before being merged by the repository owner. <a href=\"https:\/\/github.com\/\">https:\/\/github.com\/<\/a><\/span><\/span><\/span> issue)<\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/WordPress\/gutenberg\/issues\/42388#top\">A themeable and scalable primitive system<\/a> (GitHub issue)<\/li>\n<\/ul>\n\n\n\n<p class=\"has-text-align-right wp-block-paragraph\"><em>Props to <a href=\"https:\/\/profiles.wordpress.org\/wildworks\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>wildworks<\/a> and <a href=\"https:\/\/profiles.wordpress.org\/tyxla\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>tyxla<\/a> for reviewing this post\u2019s content.<\/em><\/p>\n<p class=\"o2-appended-tags\"><a href=\"https:\/\/make.wordpress.org\/core\/tag\/dev-notes\/\" class=\"tag\"><span class=\"tag-prefix\">#<\/span>dev-notes<\/a>, <a href=\"https:\/\/make.wordpress.org\/core\/tag\/dev-notes-7-1\/\" class=\"tag\"><span class=\"tag-prefix\">#<\/span>dev-notes-7-1<\/a><\/p><nav class='o2-post-footer-actions'><ul class='o2-post-footer-action-row'><li class='o2-post-footer-action'><a href=\"https:\/\/login.wordpress.org\/?redirect_to=https%3A%2F%2Fmake.wordpress.org%2Fcore%2F2026%2F07%2F31%2Fdesign-system-theming-in-wordpress-7-1%2F%23respond&#038;locale=en_US\" title=\"Login to Reply\"  class=\"genericon  genericon-reply\"  data-action=\"login-to-reply\"  data-actionstate=\"default\" >Login to Reply<\/a><\/li><\/ul><div class='o2-post-footer-action-likes'><\/div><ul class='o2-post-footer-action-row'><\/ul><\/nav>","protected":false},"excerpt":{"rendered":"<p>WordPress 7.1 will include foundational support for theming design aspects of adminadmin (and super admin) interface components, including color, roundness, and cursor pointers for interactive controls. The background and purpose behind these new features were shared previously in Merge Proposal: Design System Theming. This post aims to provide information about what is included with WordPress [&hellip;]<\/p>\n","protected":false},"author":13655154,"featured_media":0,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"WordPress 7.1 will include foundational support for theming design aspects of admin interface components, including color, roundness, and cursor pointers for interactive controls.","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"jetpack_seo_schema_type":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[1175],"tags":[1443,5894],"class_list":["post-125147","post","type-post","status-publish","format-standard","hentry","category-general","tag-dev-notes","tag-dev-notes-7-1","mentions-tyxla","mentions-wildworks","author-aduth"],"revision_note":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p2AvED-wyv","jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/125147","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/users\/13655154"}],"replies":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments?post=125147"}],"version-history":[{"count":12,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/125147\/revisions"}],"predecessor-version":[{"id":125214,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/125147\/revisions\/125214"}],"wp:attachment":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/media?parent=125147"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/categories?post=125147"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags?post=125147"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}