Share themes
At some point you’d might want to share your theme with the world or just make it exportable and packaged in a separate file.
There’s a few ways to go about this but a flexible option is to wrap the theme template in a custom element in a Javascript ESM module.
If we take the tiny-theme example from the introduction this is how the Javascript theme file would look like.
// media-theme-tiny.js
import { MediaThemeElement } from 'media-chrome/dist/media-theme-element.js';
const template = document.createElement('template');
template.innerHTML = `
<media-controller>
<slot name="media" slot="media"></slot>
<media-control-bar>
<media-play-button></media-play-button>
</media-control-bar>
</media-controller>
`;
class MediaThemeTiny extends MediaThemeElement {
static template = template;
}
if (!globalThis.customElements.get('media-theme-tiny')) {
globalThis.customElements.define('media-theme-tiny', MediaThemeTiny);
}
export default MediaThemeTiny;
And this is how it could be used in your web page or app.
<script type="module" src="./media-theme-tiny.js"></script>
<media-theme-tiny>
<video
slot="media"
src="https://stream.mux.com/A3VXy02VoUinw01pwyomEO3bHnG4P32xzV7u1j1FSzjNg/high.mp4"
></video>
<media-theme-tiny>