Codex

Codex is the frontend development toolkit used for implementing the Wikimedia Design Style Guide in code. As a software package, Codex includes user interface components built in JavaScript (Vue.js), design tokens to store data for design values, and user-facing documentation. Codex components include wide-ranging support for internationalization, global usage and web accessibility by default.

This page documents how to use Codex in MediaWiki. You may also want to read the more general documentation about how to use Vue.js in MediaWiki.

Version used in MediaWiki
MediaWiki currently uses version 0.3.0 of Codex. A new version is released every 2 weeks (see the Release Timeline for more information about versions and the release cadence).

Differences between Codex documentation and MediaWiki usage
The Codex documentation includes code examples that show how to use each component. These examples will not work in MediaWiki, because they use /, TypeScript types, and self-closing tags. The table below summarizes the differences between what is shown in the Codex documentation, and what must be used instead in MediaWiki. Also read the sections below that go into more detail about how to use Codex components and Codex icons in MediaWiki.

Using Codex components in MediaWiki and extensions
Codex is included in MediaWiki, and is made available through the  ResourceLoader module. To use Codex components in your code, add  to your module's dependencies, then import the components you need as follows: You can then pass these components to the   option of your component, and use them in your component's template. Remember that kebab-case is required in templates, so you have to use  for CdxButton,   for CdxTextInput, etc.

Example
Example of a simple block form using the CdxButton and CdxTextInput components from Codex: Example of the module definition (in  format):

Using Codex icons in MediaWiki and extensions
For performance reasons, there is no  ResourceLoader module containing all the icons from Codex. Such a module would be large and wasteful, since most users of Codex only need a handful of the 200+ icons. Instead, ResourceLoader provides a way for modules to embed the icons they need, by defining a package file as follows: These icons can then be imported in  files as follows: For more information about how to use these icons once you've imported them, see the Codex documentation on icons.

Example
Example of the same block form as above, but with an icon added: main

Example of the ResourceLoader module definition: In this example,  is an init file that mounts the component with , as documented here.