diff --git a/src/components/ha-card.js b/src/components/ha-card.js
deleted file mode 100644
index 44e58f43e9..0000000000
--- a/src/components/ha-card.js
+++ /dev/null
@@ -1,42 +0,0 @@
-import "@polymer/paper-styles/element-styles/paper-material-styles";
-import { html } from "@polymer/polymer/lib/utils/html-tag";
-import { PolymerElement } from "@polymer/polymer/polymer-element";
-
-class HaCard extends PolymerElement {
- static get template() {
- return html`
-
-
-
-
-
-
- `;
- }
-
- static get properties() {
- return {
- header: String,
- };
- }
-}
-
-customElements.define("ha-card", HaCard);
diff --git a/src/components/ha-card.ts b/src/components/ha-card.ts
new file mode 100644
index 0000000000..917ec69f8d
--- /dev/null
+++ b/src/components/ha-card.ts
@@ -0,0 +1,45 @@
+import {
+ css,
+ CSSResult,
+ html,
+ LitElement,
+ property,
+ TemplateResult,
+} from "lit-element";
+
+class HaCard extends LitElement {
+ @property() public header?: string;
+
+ static get styles(): CSSResult {
+ return css`
+ :host {
+ background: var(
+ --ha-card-background,
+ var(--paper-card-background-color, white)
+ );
+ border-radius: var(--ha-card-border-radius, 2px);
+ box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14),
+ 0 1px 5px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -2px rgba(0, 0, 0, 0.2);
+ color: var(--primary-text-color);
+ display: block;
+ transition: all 0.3s ease-out;
+ }
+ .header:not(:empty) {
+ font-size: 24px;
+ letter-spacing: -0.012em;
+ line-height: 32px;
+ opacity: 0.87;
+ padding: 24px 16px 16px;
+ }
+ `;
+ }
+
+ protected render(): TemplateResult {
+ return html`
+
+
+ `;
+ }
+}
+
+customElements.define("ha-card", HaCard);