diff --git a/web/app/components/auth-panel/__pseudo-link/auth-panel__pseudo-link.scss b/web/app/components/auth-panel/__pseudo-link/auth-panel__pseudo-link.scss
new file mode 100644
index 00000000..d81c8d3a
--- /dev/null
+++ b/web/app/components/auth-panel/__pseudo-link/auth-panel__pseudo-link.scss
@@ -0,0 +1,6 @@
+.auth-panel__pseudo-link {
+ display: inline-block;
+ white-space: nowrap;
+ cursor: pointer;
+ color: #06c5c5;
+}
diff --git a/web/app/components/auth-panel/auth-panel.jsx b/web/app/components/auth-panel/auth-panel.jsx
new file mode 100644
index 00000000..be797235
--- /dev/null
+++ b/web/app/components/auth-panel/auth-panel.jsx
@@ -0,0 +1,42 @@
+import { h, Component } from 'preact';
+
+export default class AuthPanel extends Component {
+ render(props, state) {
+ const { user, providers } = props;
+
+ return (
+
+ {
+ !!user.name && (
+ You signed in as {user.name}. Sign out?
+ )
+ }
+
+ {
+ !user.name && (
+
+ Sign in to comment using
+ {' '}
+ {
+ providers.map((provider, i) => {
+ const comma = i === 0 ? '' : ', ';
+
+ return (
+
+ {comma}
+ props.onSignIn(provider)}
+ >{provider}
+
+ )
+ })
+ }
+ {'.'}
+
+ )
+ }
+
+ );
+ }
+}
diff --git a/web/app/components/auth-panel/auth-panel.scss b/web/app/components/auth-panel/auth-panel.scss
new file mode 100644
index 00000000..0625ab0e
--- /dev/null
+++ b/web/app/components/auth-panel/auth-panel.scss
@@ -0,0 +1,4 @@
+.auth-panel {
+ font-size: 12px;
+ line-height: 16px;
+}
diff --git a/web/app/components/auth-panel/index.js b/web/app/components/auth-panel/index.js
new file mode 100644
index 00000000..974fbc18
--- /dev/null
+++ b/web/app/components/auth-panel/index.js
@@ -0,0 +1,5 @@
+export { default } from './auth-panel';
+
+require('./auth-panel.scss');
+
+require('./__pseudo-link/auth-panel__pseudo-link.scss');