Something went wrong. Try again.
my own indieAuth provider! indiko.dunkirk.sh/docs
indieauth oauth2-server
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167<!doctype html><html lang="en">
<head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>authorized apps • indiko</title> <meta name="description" content="Manage apps you've authorized with your Indiko account" /> <link rel="icon" href="../../public/favicon.svg" type="image/svg+xml" />
<meta property="og:type" content="website" /> <meta property="og:title" content="Authorized Apps • Indiko" /> <meta property="og:description" content="Manage apps you've authorized with your Indiko account" /> <meta name="twitter:card" content="summary" /> <meta name="twitter:title" content="Authorized Apps • Indiko" /> <meta name="twitter:description" content="Manage apps you've authorized with your Indiko account" />
<link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@300..700&display=swap" rel="stylesheet"> <link rel="stylesheet" href="../client/ds/tokens.css"> <link rel="stylesheet" href="../client/ds/components.css"> <link rel="stylesheet" href="../styles.css"> <style> body { align-items: stretch; }
header, main { width: 100%; max-width: var(--page-width); margin-left: auto; margin-right: auto; }
header { margin-bottom: var(--space-6); }
h1 { font-size: var(--text-2xl); margin-bottom: var(--space-1); }
.subtitle { color: var(--paper-dim); font-size: var(--text-md); font-weight: 300; }
.apps-list { display: flex; flex-direction: column; gap: var(--space-2); }
.app-card { padding: var(--space-3) var(--space-4); }
.app-head { display: flex; justify-content: space-between; align-items: flex-start; gap: var(--space-3); margin-bottom: var(--space-2); }
.app-name { font-size: var(--text-md); font-weight: 600; color: var(--paper); }
.app-meta { font-size: var(--text-xs); color: var(--paper-dim); margin-top: var(--space-1); }
.scopes { margin-top: var(--space-2); }
.scope-title { font-size: var(--text-xs); color: var(--paper-dim); text-transform: uppercase; letter-spacing: 0.05rem; margin-bottom: var(--space-2); }
.scope-list { display: flex; flex-wrap: wrap; gap: var(--space-2); }
.scope-badge { padding: var(--space-1) var(--space-2); font-size: var(--text-xs); font-weight: 600; text-transform: uppercase; letter-spacing: 0.05rem; background: rgba(188, 141, 160, 0.2); color: var(--paper); border: 1px solid var(--paper-dim); }
.revoke-btn { padding: var(--space-2) var(--space-3); background: rgba(160, 70, 104, 0.2); color: var(--paper); border: 1px solid var(--accent-deep); font-family: var(--font); font-size: var(--text-xs); font-weight: 600; text-transform: uppercase; letter-spacing: 0.05rem; cursor: pointer; transition: all 0.2s; flex-shrink: 0; }
.revoke-btn:hover:not(:disabled) { background: rgba(160, 70, 104, 0.3); }
.revoke-btn:disabled { opacity: 0.5; cursor: not-allowed; }
.empty, .loading, .error { color: var(--paper-dim); font-size: var(--text-sm); padding: var(--space-4) 0; }
</style></head>
<body> <i-nav active="apps"></i-nav>
<header> <h1>authorized apps</h1> <p class="subtitle">manage apps that have access to your account</p> </header>
<main> <div id="appsList" class="apps-list"> <div class="loading">loading apps...</div> </div>
</main>
<i-toast id="toast"></i-toast>
<script type="module" src="../client/apps.ts"></script></body>
</html>