custom-elements.json
A file format for describing custom elements
| Type | object |
|---|---|
| File match |
custom-elements.json
|
| Schema URL | https://catalog.lintel.tools/schemas/schemastore/custom-elements-json/latest.json |
| Source | https://raw.githubusercontent.com/webcomponents/custom-elements-manifest/main/schema.json |
Validate with Lintel
npx @lintel/lintel check
The top-level interface of a custom elements manifest file.
Because custom elements are JavaScript classes, describing a custom element may require describing arbitrary JavaScript concepts like modules, classes, functions, etc. So custom elements manifests are capable of documenting the elements in a package, as well as those JavaScript concepts.
The modules described in a package should be the public entrypoints that other packages may import from. Multiple modules may export the same object via re-exports, but in most cases a package should document the single canonical export that should be used.
Properties
An array of the modules this package contains.
The version of the schema used in this file.
Whether the package is deprecated. If the value is a string, it's the reason for the deprecation.
The Markdown to use for the main readme of this package.
This can be used to override the readme used by Github or npm if that file contains information irrelevant to custom element catalogs and documentation viewers.
Definitions
The default value of the attribute, if any.
As attributes are always strings, this is the actual value, not a human readable description.
Whether the attribute is deprecated. If the value is a string, it's the reason for the deprecation.
A markdown description.
The name of the field this attribute is associated with, if any.
A reference to an export of a module.
All references are required to be publically accessible, so the canonical representation of a reference is the export it's available from.
package should generally refer to an npm package name. If package is
undefined then the reference is local to this package. If module is
undefined the reference is local to the containing module.
References to global symbols like Array, HTMLElement, or Event should
use a package name of "global:".
3 nested properties
A markdown summary suitable for display in a listing.
3 nested properties
The full string representation of the type, in whatever type syntax is used, such as JSDoc, Closure, or TypeScript.
An array of references to the types in the type string.
These references have optional indices into the type string so that tools
can understand the references in the type string independently of the type
system and syntax. For example, a documentation viewer could display the
type Array<FooElement | BarElement> with cross-references to FooElement
and BarElement without understanding arrays, generics, or union types.
A reference to the source of a declaration or member.
1 nested properties
An absolute URL to the source (ie. a GitHub URL).
Whether the class or mixin is deprecated. If the value is a string, it's the reason for the deprecation.
A markdown description of the class.
Any class mixins applied in the extends clause of this class.
If mixins are applied in the class definition, then the true superclass of this class is the result of applying mixins in order to the superclass.
Mixins must be listed in order of their application to the superclass or previous mixin application. This means that the innermost mixin is listed first. This may read backwards from the common order in JavaScript, but matches the order of language used to describe mixin application, like "S with A, B".
A reference to the source of a declaration or member.
1 nested properties
An absolute URL to the source (ie. a GitHub URL).
A markdown summary suitable for display in a listing.
A reference to an export of a module.
All references are required to be publically accessible, so the canonical representation of a reference is the export it's available from.
package should generally refer to an npm package name. If package is
undefined then the reference is local to this package. If module is
undefined the reference is local to the containing module.
References to global symbols like Array, HTMLElement, or Event should
use a package name of "global:".
3 nested properties
Whether the property is deprecated. If the value is a string, it's the reason for the deprecation.
A markdown description of the field.
A reference to an export of a module.
All references are required to be publically accessible, so the canonical representation of a reference is the export it's available from.
package should generally refer to an npm package name. If package is
undefined then the reference is local to this package. If module is
undefined the reference is local to the containing module.
References to global symbols like Array, HTMLElement, or Event should
use a package name of "global:".
3 nested properties
Whether the property is read-only.
A reference to the source of a declaration or member.
1 nested properties
An absolute URL to the source (ie. a GitHub URL).
A markdown summary suitable for display in a listing.
3 nested properties
The full string representation of the type, in whatever type syntax is used, such as JSDoc, Closure, or TypeScript.
An array of references to the types in the type string.
These references have optional indices into the type string so that tools
can understand the references in the type string independently of the type
system and syntax. For example, a documentation viewer could display the
type Array<FooElement | BarElement> with cross-references to FooElement
and BarElement without understanding arrays, generics, or union types.
A reference to the source of a declaration or member.
1 nested properties
An absolute URL to the source (ie. a GitHub URL).
Whether the function is deprecated. If the value is a string, it's the reason for the deprecation.
A markdown description.
A reference to an export of a module.
All references are required to be publically accessible, so the canonical representation of a reference is the export it's available from.
package should generally refer to an npm package name. If package is
undefined then the reference is local to this package. If module is
undefined the reference is local to the containing module.
References to global symbols like Array, HTMLElement, or Event should
use a package name of "global:".
3 nested properties
3 nested properties
A markdown description.
A markdown summary suitable for display in a listing.
3 nested properties
The full string representation of the type, in whatever type syntax is used, such as JSDoc, Closure, or TypeScript.
An array of references to the types in the type string.
These references have optional indices into the type string so that tools
can understand the references in the type string independently of the type
system and syntax. For example, a documentation viewer could display the
type Array<FooElement | BarElement> with cross-references to FooElement
and BarElement without understanding arrays, generics, or union types.
A reference to the source of a declaration or member.
A reference to the source of a declaration or member.
1 nested properties
An absolute URL to the source (ie. a GitHub URL).
A markdown summary suitable for display in a listing.
The name of the property, including leading --.
Whether the CSS custom property is deprecated. If the value is a string, it's the reason for the deprecation.
A markdown description.
A markdown summary suitable for display in a listing.
The expected syntax of the defined property. Defaults to "*".
The syntax must be a valid CSS syntax string as defined in the CSS Properties and Values API.
Examples:
"
The description of a CSS Custom State https://developer.mozilla.org/en-US/docs/Web/API/CustomStateSet
The name of the state. Note: Unlike CSS custom properties, custom states
do not have a leading --.
Whether the CSS custom state is deprecated. If the value is a string, it's the reason for the deprecation.
A markdown description.
A markdown summary suitable for display in a listing.
The description of a CSS Part
Whether the CSS shadow part is deprecated. If the value is a string, it's the reason for the deprecation.
A markdown description.
A markdown summary suitable for display in a listing.
A description of a custom element class.
Custom elements are JavaScript classes, so this extends from
ClassDeclaration and adds custom-element-specific features like
attributes, events, and slots.
Note that tagName in this interface is optional. Tag names are not
neccessarily part of a custom element class, but belong to the definition
(often called the "registration") or the customElements.define() call.
Because classes and tag names can only be registered once, there's a one-to-one relationship between classes and tag names. For ease of use, we allow the tag name here.
Some packages define and register custom elements in separate modules. In
these cases one Module should contain the CustomElement without a
tagName, and another Module should contain the
CustomElementExport.
Distinguishes a regular JavaScript class from a custom element class
The attributes that this element is known to understand.
Whether the class or mixin is deprecated. If the value is a string, it's the reason for the deprecation.
A markdown description of the class.
The events that this element fires.
Any class mixins applied in the extends clause of this class.
If mixins are applied in the class definition, then the true superclass of this class is the result of applying mixins in order to the superclass.
Mixins must be listed in order of their application to the superclass or previous mixin application. This means that the innermost mixin is listed first. This may read backwards from the common order in JavaScript, but matches the order of language used to describe mixin application, like "S with A, B".
The shadow dom content slots that this element accepts.
A reference to the source of a declaration or member.
1 nested properties
An absolute URL to the source (ie. a GitHub URL).
A markdown summary suitable for display in a listing.
A reference to an export of a module.
All references are required to be publically accessible, so the canonical representation of a reference is the export it's available from.
package should generally refer to an npm package name. If package is
undefined then the reference is local to this package. If module is
undefined the reference is local to the containing module.
References to global symbols like Array, HTMLElement, or Event should
use a package name of "global:".
3 nested properties
An optional tag name that should be specified if this is a self-registering element.
Self-registering elements must also include a CustomElementExport in the module's exports.
A global custom element defintion, ie the result of a
customElements.define() call.
This is represented as an export because a definition makes the element available outside of the module it's defined it.
A reference to an export of a module.
All references are required to be publically accessible, so the canonical representation of a reference is the export it's available from.
package should generally refer to an npm package name. If package is
undefined then the reference is local to this package. If module is
undefined the reference is local to the containing module.
References to global symbols like Array, HTMLElement, or Event should
use a package name of "global:".
3 nested properties
The tag name of the custom element.
Whether the custom-element export is deprecated. For example, a future version will not register the custom element in this file. If the value is a string, it's the reason for the deprecation.
A class mixin that also adds custom element related properties.
Distinguishes a regular JavaScript class from a custom element class
The attributes that this element is known to understand.
Whether the class or mixin is deprecated. If the value is a string, it's the reason for the deprecation.
A markdown description of the class.
The events that this element fires.
Any class mixins applied in the extends clause of this class.
If mixins are applied in the class definition, then the true superclass of this class is the result of applying mixins in order to the superclass.
Mixins must be listed in order of their application to the superclass or previous mixin application. This means that the innermost mixin is listed first. This may read backwards from the common order in JavaScript, but matches the order of language used to describe mixin application, like "S with A, B".
3 nested properties
A markdown description.
A markdown summary suitable for display in a listing.
3 nested properties
The full string representation of the type, in whatever type syntax is used, such as JSDoc, Closure, or TypeScript.
An array of references to the types in the type string.
These references have optional indices into the type string so that tools
can understand the references in the type string independently of the type
system and syntax. For example, a documentation viewer could display the
type Array<FooElement | BarElement> with cross-references to FooElement
and BarElement without understanding arrays, generics, or union types.
A reference to the source of a declaration or member.
The shadow dom content slots that this element accepts.
A reference to the source of a declaration or member.
1 nested properties
An absolute URL to the source (ie. a GitHub URL).
A markdown summary suitable for display in a listing.
A reference to an export of a module.
All references are required to be publically accessible, so the canonical representation of a reference is the export it's available from.
package should generally refer to an npm package name. If package is
undefined then the reference is local to this package. If module is
undefined the reference is local to the containing module.
References to global symbols like Array, HTMLElement, or Event should
use a package name of "global:".
3 nested properties
An optional tag name that should be specified if this is a self-registering element.
Self-registering elements must also include a CustomElementExport in the module's exports.
Relative URL of the demo if it's published with the package. Absolute URL if it's hosted.
A markdown description of the demo.
A reference to the source of a declaration or member.
1 nested properties
An absolute URL to the source (ie. a GitHub URL).
3 nested properties
The full string representation of the type, in whatever type syntax is used, such as JSDoc, Closure, or TypeScript.
An array of references to the types in the type string.
These references have optional indices into the type string so that tools
can understand the references in the type string independently of the type
system and syntax. For example, a documentation viewer could display the
type Array<FooElement | BarElement> with cross-references to FooElement
and BarElement without understanding arrays, generics, or union types.
A reference to the source of a declaration or member.
1 nested properties
An absolute URL to the source (ie. a GitHub URL).
Whether the event is deprecated. If the value is a string, it's the reason for the deprecation.
A markdown description.
A reference to an export of a module.
All references are required to be publically accessible, so the canonical representation of a reference is the export it's available from.
package should generally refer to an npm package name. If package is
undefined then the reference is local to this package. If module is
undefined the reference is local to the containing module.
References to global symbols like Array, HTMLElement, or Event should
use a package name of "global:".
3 nested properties
A markdown summary suitable for display in a listing.
Whether the function is deprecated. If the value is a string, it's the reason for the deprecation.
A markdown description.
3 nested properties
A markdown description.
A markdown summary suitable for display in a listing.
3 nested properties
The full string representation of the type, in whatever type syntax is used, such as JSDoc, Closure, or TypeScript.
An array of references to the types in the type string.
These references have optional indices into the type string so that tools
can understand the references in the type string independently of the type
system and syntax. For example, a documentation viewer could display the
type Array<FooElement | BarElement> with cross-references to FooElement
and BarElement without understanding arrays, generics, or union types.
A reference to the source of a declaration or member.
A reference to the source of a declaration or member.
1 nested properties
An absolute URL to the source (ie. a GitHub URL).
A markdown summary suitable for display in a listing.
A reference to an export of a module.
All references are required to be publically accessible, so the canonical representation of a reference is the export it's available from.
package should generally refer to an npm package name. If package is
undefined then the reference is local to this package. If module is
undefined the reference is local to the containing module.
References to global symbols like Array, HTMLElement, or Event should
use a package name of "global:".
3 nested properties
The name of the exported symbol.
JavaScript has a number of ways to export objects which determine the correct name to use.
- Default exports must use the name "default".
- Named exports use the name that is exported. If the export is renamed with the "as" clause, use the exported name.
- Aggregating exports (
* from) should use the name*
Whether the export is deprecated. For example, the name of the export was changed. If the value is a string, it's the reason for the deprecation.
Path to the javascript file needed to be imported. (not the path for example to a typescript file.)
The declarations of a module.
For documentation purposes, all declarations that are reachable from exports should be described here. Ie, functions and objects that may be properties of exported objects, or passed as arguments to functions.
Whether the module is deprecated. If the value is a string, it's the reason for the deprecation.
A markdown description of the module.
The exports of a module. This includes JavaScript exports and custom element definitions.
A markdown summary suitable for display in a listing.
A description of a class mixin.
Mixins are functions which generate a new subclass of a given superclass. This interfaces describes the class and custom element features that are added by the mixin. As such, it extends the CustomElement interface and ClassLike interface.
Since mixins are functions, it also extends the FunctionLike interface. This means a mixin is callable, and has parameters and a return type.
The return type is often hard or impossible to accurately describe in type
systems like TypeScript. It requires generics and an extends operator
that TypeScript lacks. Therefore it's recommended that the return type is
left empty. The most common form of a mixin function takes a single
argument, so consumers of this interface should assume that the return type
is the single argument subclassed by this declaration.
A mixin should not have a superclass. If a mixins composes other mixins,
they should be listed in the mixins field.
See [this article]{@link https://justinfagnani.com/2015/12/21/real-mixins-with-javascript-classes/} for more information on the classmixin pattern in JavaScript.
Whether the class or mixin is deprecated. If the value is a string, it's the reason for the deprecation.
A markdown description of the class.
Any class mixins applied in the extends clause of this class.
If mixins are applied in the class definition, then the true superclass of this class is the result of applying mixins in order to the superclass.
Mixins must be listed in order of their application to the superclass or previous mixin application. This means that the innermost mixin is listed first. This may read backwards from the common order in JavaScript, but matches the order of language used to describe mixin application, like "S with A, B".
3 nested properties
A markdown description.
A markdown summary suitable for display in a listing.
3 nested properties
The full string representation of the type, in whatever type syntax is used, such as JSDoc, Closure, or TypeScript.
An array of references to the types in the type string.
These references have optional indices into the type string so that tools
can understand the references in the type string independently of the type
system and syntax. For example, a documentation viewer could display the
type Array<FooElement | BarElement> with cross-references to FooElement
and BarElement without understanding arrays, generics, or union types.
A reference to the source of a declaration or member.
A reference to the source of a declaration or member.
1 nested properties
An absolute URL to the source (ie. a GitHub URL).
A markdown summary suitable for display in a listing.
A reference to an export of a module.
All references are required to be publically accessible, so the canonical representation of a reference is the export it's available from.
package should generally refer to an npm package name. If package is
undefined then the reference is local to this package. If module is
undefined the reference is local to the containing module.
References to global symbols like Array, HTMLElement, or Event should
use a package name of "global:".
3 nested properties
Whether the property is deprecated. If the value is a string, it's the reason for the deprecation.
A markdown description of the field.
Whether the parameter is optional. Undefined implies non-optional.
Whether the property is read-only.
Whether the parameter is a rest parameter. Only the last parameter may be a rest parameter. Undefined implies single parameter.
A markdown summary suitable for display in a listing.
3 nested properties
The full string representation of the type, in whatever type syntax is used, such as JSDoc, Closure, or TypeScript.
An array of references to the types in the type string.
These references have optional indices into the type string so that tools
can understand the references in the type string independently of the type
system and syntax. For example, a documentation viewer could display the
type Array<FooElement | BarElement> with cross-references to FooElement
and BarElement without understanding arrays, generics, or union types.
A reference to the source of a declaration or member.
1 nested properties
An absolute URL to the source (ie. a GitHub URL).
A reference to an export of a module.
All references are required to be publically accessible, so the canonical representation of a reference is the export it's available from.
package should generally refer to an npm package name. If package is
undefined then the reference is local to this package. If module is
undefined the reference is local to the containing module.
References to global symbols like Array, HTMLElement, or Event should
use a package name of "global:".
The slot name, or the empty string for an unnamed slot.
Whether the slot is deprecated. If the value is a string, it's the reason for the deprecation.
A markdown description.
A markdown summary suitable for display in a listing.
A reference to the source of a declaration or member.
An absolute URL to the source (ie. a GitHub URL).
The full string representation of the type, in whatever type syntax is used, such as JSDoc, Closure, or TypeScript.
An array of references to the types in the type string.
These references have optional indices into the type string so that tools
can understand the references in the type string independently of the type
system and syntax. For example, a documentation viewer could display the
type Array<FooElement | BarElement> with cross-references to FooElement
and BarElement without understanding arrays, generics, or union types.
A reference to the source of a declaration or member.
1 nested properties
An absolute URL to the source (ie. a GitHub URL).
A reference that is associated with a type string and optionally a range within the string.
Start and end must both be present or not present. If they're present, they are indices into the associated type string. If they are missing, the entire type string is the symbol referenced and the name should match the type string.
Whether the property is deprecated. If the value is a string, it's the reason for the deprecation.
A markdown description of the field.
Whether the property is read-only.
A reference to the source of a declaration or member.
1 nested properties
An absolute URL to the source (ie. a GitHub URL).
A markdown summary suitable for display in a listing.
3 nested properties
The full string representation of the type, in whatever type syntax is used, such as JSDoc, Closure, or TypeScript.
An array of references to the types in the type string.
These references have optional indices into the type string so that tools
can understand the references in the type string independently of the type
system and syntax. For example, a documentation viewer could display the
type Array<FooElement | BarElement> with cross-references to FooElement
and BarElement without understanding arrays, generics, or union types.
A reference to the source of a declaration or member.
1 nested properties
An absolute URL to the source (ie. a GitHub URL).