Browse Source

fully-implemented theme

main
Silberengel 4 weeks ago
parent
commit
aab4e8588e
  1. 750
      src/app.css
  2. 111
      src/lib/components/PRDetail.svelte
  3. 140
      src/routes/+page.svelte
  4. 77
      src/routes/docs/nip34/+page.svelte
  5. 286
      src/routes/repos/[npub]/[repo]/+page.svelte
  6. 154
      src/routes/repos/[npub]/[repo]/settings/+page.svelte
  7. 129
      src/routes/search/+page.svelte
  8. 133
      src/routes/signup/+page.svelte
  9. 79
      src/routes/users/[npub]/+page.svelte

750
src/app.css

@ -103,10 +103,458 @@ code, pre, .mono { @@ -103,10 +103,458 @@ code, pre, .mono {
font-family: 'IBM Plex Mono', 'Courier New', monospace;
}
/* Headings with slightly more weight */
/* Headings */
h1, h2, h3, h4, h5, h6 {
font-weight: 600;
letter-spacing: -0.02em;
color: var(--text-primary);
margin: 0;
}
h1 { font-size: 2rem; }
h2 { font-size: 1.5rem; }
h3 { font-size: 1.25rem; }
/* Links */
a {
color: var(--link-color);
text-decoration: none;
transition: color 0.2s ease;
}
a:hover {
color: var(--link-hover);
}
.back-link {
display: inline-block;
margin-bottom: 1rem;
color: var(--link-color);
text-decoration: none;
transition: color 0.2s ease;
font-size: 0.875rem;
}
.back-link:hover {
color: var(--link-hover);
text-decoration: underline;
}
/* Layout */
.container {
max-width: 1200px;
margin: 0 auto;
padding: 2rem;
}
.container-narrow {
max-width: 800px;
margin: 0 auto;
padding: 2rem;
}
/* Header and Navigation */
header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 2rem;
border-bottom: 1px solid var(--border-color);
padding-bottom: 1rem;
}
nav {
display: flex;
gap: 1rem;
align-items: center;
}
nav a {
text-decoration: none;
color: var(--link-color);
transition: color 0.2s ease;
}
nav a:hover {
color: var(--link-hover);
}
/* Buttons */
button, .button {
padding: 0.5rem 1rem;
border: none;
border-radius: 0.375rem;
cursor: pointer;
font-size: 0.875rem;
font-family: 'IBM Plex Serif', serif;
transition: background 0.2s ease, border-color 0.2s ease;
}
button:disabled, .button:disabled {
opacity: 0.6;
cursor: not-allowed;
}
.btn-primary, .login-button, .save-button, .view-button, .search-button, .create-file-button, .create-branch-button, .create-tag-button, .create-issue-button, .create-pr-button, .add-comment-btn, .reply-btn {
background: var(--button-primary);
color: white;
border: none;
}
.btn-primary:hover:not(:disabled), .login-button:hover:not(:disabled), .save-button:hover:not(:disabled), .view-button:hover, .search-button:hover:not(:disabled), .create-file-button:hover, .create-branch-button:hover, .create-tag-button:hover, .create-issue-button:hover, .create-pr-button:hover, .add-comment-btn:hover, .reply-btn:hover {
background: var(--button-primary-hover);
}
.btn-secondary, .logout-button {
background: var(--button-secondary);
color: white;
}
.btn-secondary:hover, .logout-button:hover {
background: var(--button-secondary-hover);
}
.logout-button {
background: var(--error-text);
}
.logout-button:hover {
opacity: 0.9;
}
.btn-danger {
background: var(--error-text);
color: white;
}
.btn-danger:hover {
opacity: 0.9;
}
.cancel-button, .cancel-btn {
padding: 0.5rem 1rem;
background: var(--bg-tertiary);
border: 1px solid var(--border-color);
border-radius: 0.25rem;
cursor: pointer;
color: var(--text-primary);
font-family: 'IBM Plex Serif', serif;
transition: background 0.2s ease;
}
.cancel-button:hover, .cancel-btn:hover {
background: var(--bg-secondary);
}
/* Forms */
form {
display: flex;
flex-direction: column;
gap: 1.5rem;
}
.form-group {
display: flex;
flex-direction: column;
gap: 0.5rem;
}
label, .label {
font-weight: 500;
display: flex;
flex-direction: column;
gap: 0.25rem;
color: var(--text-primary);
}
label small, .label small {
font-weight: normal;
color: var(--text-muted);
font-size: 0.875rem;
}
input, textarea, select {
padding: 0.75rem;
border: 1px solid var(--input-border);
border-radius: 0.375rem;
font-size: 1rem;
background: var(--input-bg);
color: var(--text-primary);
font-family: 'IBM Plex Serif', serif;
transition: border-color 0.2s ease;
}
input:focus, textarea:focus, select:focus {
outline: none;
border-color: var(--input-focus);
}
input:disabled, textarea:disabled, select:disabled {
background: var(--bg-secondary);
cursor: not-allowed;
opacity: 0.6;
}
.input-group {
display: flex;
gap: 0.5rem;
align-items: center;
}
.input-group input {
flex: 1;
}
.search-input, .search-type-select {
flex: 1;
padding: 0.75rem;
font-size: 1rem;
border: 1px solid var(--input-border);
border-radius: 4px;
background: var(--input-bg);
color: var(--text-primary);
font-family: 'IBM Plex Serif', serif;
}
.search-input:focus, .search-type-select:focus {
outline: none;
border-color: var(--input-focus);
}
.branch-select {
padding: 0.5rem;
border: 1px solid var(--input-border);
border-radius: 0.25rem;
background: var(--input-bg);
color: var(--text-primary);
font-family: 'IBM Plex Serif', serif;
}
/* Cards */
.card, .repo-card {
border: 1px solid var(--card-border);
border-radius: 0.5rem;
background: var(--card-bg);
overflow: hidden;
transition: border-color 0.2s ease, box-shadow 0.2s ease;
}
.card:hover, .repo-card:hover {
border-color: var(--accent);
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}
.repo-card-banner {
width: 100%;
height: 200px;
overflow: hidden;
background: var(--bg-secondary);
}
.repo-card-banner img {
width: 100%;
height: 100%;
object-fit: cover;
}
.repo-card-content {
padding: 1.5rem;
}
.repo-card-image, .repo-image {
width: 64px;
height: 64px;
border-radius: 8px;
object-fit: cover;
flex-shrink: 0;
}
.repo-item, .code-item {
border: 1px solid var(--card-border);
border-radius: 8px;
padding: 1rem;
cursor: pointer;
transition: box-shadow 0.2s, border-color 0.2s;
background: var(--card-bg);
}
.repo-item:hover, .code-item:hover {
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
border-color: var(--accent);
}
/* Messages */
.error, .warning, .success {
padding: 1rem;
border-radius: 0.5rem;
margin: 1rem 0;
}
.error {
background: var(--error-bg);
color: var(--error-text);
border: 1px solid var(--error-text);
}
.warning {
background: var(--warning-bg);
border: 1px solid var(--warning-text);
color: var(--warning-text);
}
.success {
background: var(--success-bg);
color: var(--success-text);
border: 1px solid var(--success-text);
}
.loading, .empty {
text-align: center;
padding: 2rem;
color: var(--text-muted);
}
.no-results {
text-align: center;
padding: 2rem;
color: var(--text-muted);
}
/* Status badges */
.pr-status, .issue-status {
padding: 0.2rem 0.5rem;
border-radius: 3px;
font-weight: bold;
font-size: 0.8rem;
}
.pr-status.open, .issue-status.open {
background: var(--accent-light);
color: var(--accent);
}
.pr-status.closed, .issue-status.closed {
background: var(--error-bg);
color: var(--error-text);
}
.pr-status.merged, .issue-status.resolved {
background: var(--success-bg);
color: var(--success-text);
}
.fork-badge {
padding: 0.25rem 0.5rem;
background: var(--accent-light);
color: var(--accent);
border-radius: 4px;
font-size: 0.85rem;
margin-left: 0.5rem;
}
.fork-badge a {
color: var(--accent);
text-decoration: none;
}
.fork-badge a:hover {
text-decoration: underline;
}
.verification-status {
padding: 0.25rem 0.5rem;
border-radius: 0.25rem;
font-size: 0.75rem;
font-weight: 500;
margin-left: 0.5rem;
}
.verification-status.verified {
background: var(--success-bg);
color: var(--success-text);
}
.verification-status.unverified {
background: var(--error-bg);
color: var(--error-text);
}
/* Code blocks */
code {
background: var(--bg-secondary);
padding: 0.125rem 0.25rem;
border-radius: 0.25rem;
font-family: 'IBM Plex Mono', monospace;
font-size: 0.875em;
color: var(--text-primary);
}
pre {
background: var(--bg-tertiary);
color: var(--text-primary);
padding: 1rem;
border-radius: 0.5rem;
overflow-x: auto;
margin: 1rem 0;
border: 1px solid var(--border-color);
}
pre code {
background: transparent;
padding: 0;
color: inherit;
}
.clone-urls code {
display: block;
background: var(--bg-secondary);
padding: 0.5rem;
border-radius: 0.25rem;
margin: 0.25rem 0;
font-family: 'IBM Plex Mono', monospace;
font-size: 0.875rem;
color: var(--text-primary);
border: 1px solid var(--border-light);
}
/* Utility classes */
.description {
color: var(--text-secondary);
margin: 0.5rem 0;
}
.repo-meta, .repo-description-header {
font-size: 0.875rem;
color: var(--text-muted);
margin-top: 1rem;
}
.repo-description-header {
margin: 0.25rem 0 0 0;
font-size: 0.9rem;
color: var(--text-secondary);
}
.npub, .auth-status {
color: var(--text-muted);
font-size: 0.875rem;
}
.user-info {
color: var(--text-secondary);
font-size: 0.875rem;
}
.docs-link {
color: var(--link-color);
text-decoration: none;
font-size: 1.25rem;
margin-left: 0.5rem;
transition: color 0.2s ease;
}
.docs-link:hover {
color: var(--link-hover);
}
/* Theme toggle button */
@ -139,3 +587,303 @@ h1, h2, h3, h4, h5, h6 { @@ -139,3 +587,303 @@ h1, h2, h3, h4, h5, h6 {
font-size: 1rem;
line-height: 1;
}
/* Search form */
.search-form {
display: flex;
gap: 1rem;
margin-bottom: 2rem;
align-items: center;
}
.results-header {
margin-bottom: 1.5rem;
}
.results-section {
margin-bottom: 2rem;
}
.repo-list, .code-list {
display: flex;
flex-direction: column;
gap: 1rem;
}
.repo-item h4 {
margin: 0 0 0.5rem 0;
color: var(--link-color);
}
.repo-description {
color: var(--text-secondary);
margin: 0.5rem 0;
}
.code-file-path {
font-family: 'IBM Plex Mono', monospace;
color: var(--text-primary);
margin-bottom: 0.5rem;
}
.code-repo a {
color: var(--link-color);
}
.code-repo a:hover {
color: var(--link-hover);
}
/* Settings form */
.settings-form {
background: var(--card-bg);
border-radius: 8px;
padding: 2rem;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
border: 1px solid var(--border-color);
}
.form-section {
margin-bottom: 2rem;
padding-bottom: 2rem;
border-bottom: 1px solid var(--border-color);
}
.form-section:last-of-type {
border-bottom: none;
}
.help-text {
color: var(--text-muted);
font-size: 0.9rem;
margin-bottom: 1rem;
}
.array-input {
display: flex;
gap: 0.5rem;
margin-bottom: 0.5rem;
align-items: center;
}
.add-button, .remove-button {
padding: 0.5rem 1rem;
border: 1px solid var(--border-color);
border-radius: 4px;
background: var(--card-bg);
cursor: pointer;
font-size: 0.9rem;
font-family: 'IBM Plex Serif', serif;
transition: background 0.2s ease;
}
.add-button {
color: var(--button-primary);
border-color: var(--button-primary);
}
.add-button:hover {
background: var(--accent-light);
}
.remove-button {
color: var(--error-text);
border-color: var(--error-text);
}
.remove-button:hover {
background: var(--error-bg);
}
.form-actions {
display: flex;
gap: 1rem;
justify-content: flex-end;
margin-top: 2rem;
}
/* Repo header */
.repos-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 2rem;
}
.repos-list {
display: grid;
gap: 1.5rem;
}
.repo-header {
display: flex;
justify-content: space-between;
align-items: flex-start;
margin-bottom: 0.5rem;
gap: 1rem;
}
.repo-header-text {
flex: 1;
}
.header-left {
display: flex;
flex-direction: column;
align-items: flex-start;
gap: 0.5rem;
}
.repo-title-section {
display: flex;
align-items: center;
gap: 1rem;
margin-bottom: 0.5rem;
}
.header-right {
display: flex;
align-items: center;
gap: 1rem;
}
/* Auth section */
.auth-section {
display: flex;
align-items: center;
gap: 1rem;
}
/* Code repo link */
.code-repo {
font-size: 0.9rem;
color: var(--text-secondary);
}
/* Docs page */
.container-wide {
max-width: 1000px;
margin: 0 auto;
padding: 2rem;
}
/* Highlight.js Syntax Highlighting - Custom Theme using CSS Variables */
.hljs {
background: var(--bg-tertiary);
color: var(--text-primary);
border: 1px solid var(--border-color);
border-radius: 4px;
padding: 1rem;
overflow-x: auto;
}
/* Syntax highlighting colors - adapted to royal plum theme */
.hljs-comment,
.hljs-quote {
color: var(--text-muted);
font-style: italic;
}
.hljs-keyword,
.hljs-selector-tag,
.hljs-subst {
color: var(--accent);
font-weight: 500;
}
.hljs-number,
.hljs-literal,
.hljs-variable,
.hljs-template-variable,
.hljs-tag .hljs-attr {
color: var(--accent-light);
}
.hljs-string,
.hljs-doctag {
color: var(--success-text);
}
.hljs-title,
.hljs-section,
.hljs-selector-id {
color: var(--accent);
font-weight: 600;
}
.hljs-type,
.hljs-class .hljs-title {
color: var(--accent);
font-weight: 500;
}
.hljs-tag,
.hljs-name,
.hljs-attribute {
color: var(--accent);
}
.hljs-regexp,
.hljs-link {
color: var(--accent-light);
}
.hljs-symbol,
.hljs-bullet {
color: var(--warning-text);
}
.hljs-built_in,
.hljs-builtin-name {
color: var(--accent-light);
}
.hljs-meta {
color: var(--text-muted);
}
.hljs-deletion {
background: var(--error-bg);
color: var(--error-text);
}
.hljs-addition {
background: var(--success-bg);
color: var(--success-text);
}
.hljs-emphasis {
font-style: italic;
}
.hljs-strong {
font-weight: 600;
}
/* Dark theme adjustments for better contrast */
[data-theme="dark"] .hljs {
background: var(--bg-tertiary);
}
[data-theme="dark"] .hljs-string,
[data-theme="dark"] .hljs-doctag {
color: var(--success-text);
}
[data-theme="dark"] .hljs-keyword,
[data-theme="dark"] .hljs-selector-tag,
[data-theme="dark"] .hljs-subst {
color: var(--accent);
}
/* Light theme adjustments */
:root:not([data-theme="dark"]) .hljs-string,
:root:not([data-theme="dark"]) .hljs-doctag {
color: #065f46; /* Darker green for light mode */
}
:root:not([data-theme="dark"]) .hljs-keyword,
:root:not([data-theme="dark"]) .hljs-selector-tag,
:root:not([data-theme="dark"]) .hljs-subst {
color: #6a1f4d; /* Darker plum for light mode */
}

111
src/lib/components/PRDetail.svelte

@ -469,18 +469,19 @@ @@ -469,18 +469,19 @@
.pr-header {
margin-bottom: 1rem;
padding-bottom: 1rem;
border-bottom: 1px solid #e0e0e0;
border-bottom: 1px solid var(--border-color);
}
.pr-header h2 {
margin: 0 0 0.5rem 0;
color: var(--text-primary);
}
.pr-meta {
display: flex;
gap: 1rem;
font-size: 0.9rem;
color: #666;
color: var(--text-muted);
}
.pr-status {
@ -491,18 +492,18 @@ @@ -491,18 +492,18 @@
}
.pr-status.open {
background: #d4edda;
color: #155724;
background: var(--accent-light);
color: var(--accent);
}
.pr-status.closed {
background: #f8d7da;
color: #721c24;
background: var(--error-bg);
color: var(--error-text);
}
.pr-status.merged {
background: #d1ecf1;
color: #0c5460;
background: var(--success-bg);
color: var(--success-text);
}
.pr-body {
@ -511,8 +512,9 @@ @@ -511,8 +512,9 @@
.pr-description {
padding: 1rem;
background: #f5f5f5;
background: var(--bg-secondary);
border-radius: 4px;
color: var(--text-primary);
}
.pr-content {
@ -522,20 +524,23 @@ @@ -522,20 +524,23 @@
}
.code-section, .highlights-section {
border: 1px solid #e0e0e0;
border: 1px solid var(--border-color);
border-radius: 4px;
padding: 1rem;
background: var(--card-bg);
}
.code-section h3, .highlights-section h3 {
margin-top: 0;
color: var(--text-primary);
}
.diff-viewer {
height: 500px;
border: 1px solid #ddd;
border: 1px solid var(--border-color);
border-radius: 4px;
overflow: auto;
background: var(--bg-secondary);
}
.section-header {
@ -547,30 +552,32 @@ @@ -547,30 +552,32 @@
.add-comment-btn, .reply-btn {
padding: 0.4rem 0.8rem;
background: #007bff;
background: var(--button-primary);
color: white;
border: none;
border-radius: 4px;
cursor: pointer;
font-size: 0.9rem;
font-family: 'IBM Plex Serif', serif;
transition: background 0.2s ease;
}
.add-comment-btn:hover, .reply-btn:hover {
background: #0056b3;
background: var(--button-primary-hover);
}
.highlight-item, .comment-item {
margin-bottom: 1.5rem;
padding: 1rem;
background: #f9f9f9;
background: var(--bg-secondary);
border-radius: 4px;
border-left: 3px solid #007bff;
border-left: 3px solid var(--accent);
}
.comment-item.nested {
margin-left: 2rem;
margin-top: 0.5rem;
border-left-color: #28a745;
border-left-color: var(--success-text);
}
.highlight-header, .comment-header {
@ -578,31 +585,35 @@ @@ -578,31 +585,35 @@
gap: 1rem;
margin-bottom: 0.5rem;
font-size: 0.9rem;
color: #666;
color: var(--text-muted);
}
.highlight-author, .comment-author {
font-weight: bold;
color: #333;
color: var(--text-primary);
}
.highlighted-code {
background: #fff;
background: var(--card-bg);
padding: 0.5rem;
border-radius: 3px;
margin: 0.5rem 0;
border: 1px solid var(--border-light);
}
.highlighted-code pre {
margin: 0;
font-size: 0.9rem;
color: var(--text-primary);
font-family: 'IBM Plex Mono', monospace;
}
.highlight-comment, .comment-content {
margin: 0.5rem 0;
padding: 0.5rem;
background: white;
background: var(--card-bg);
border-radius: 3px;
color: var(--text-primary);
}
.highlight-comments {
@ -623,26 +634,50 @@ @@ -623,26 +634,50 @@
}
.modal {
background: white;
background: var(--card-bg);
padding: 2rem;
border-radius: 8px;
max-width: 600px;
width: 90%;
max-height: 80vh;
overflow-y: auto;
border: 1px solid var(--border-color);
}
.modal h3 {
color: var(--text-primary);
}
.modal label {
color: var(--text-primary);
}
.modal textarea {
background: var(--input-bg);
border: 1px solid var(--input-border);
color: var(--text-primary);
font-family: 'IBM Plex Serif', serif;
}
.modal textarea:focus {
outline: none;
border-color: var(--input-focus);
}
.selected-code {
background: #f5f5f5;
background: var(--bg-secondary);
padding: 1rem;
border-radius: 4px;
margin-bottom: 1rem;
max-height: 200px;
overflow: auto;
border: 1px solid var(--border-light);
}
.selected-code pre {
margin: 0;
color: var(--text-primary);
font-family: 'IBM Plex Mono', monospace;
}
.modal-actions {
@ -657,34 +692,44 @@ @@ -657,34 +692,44 @@
border: none;
border-radius: 4px;
cursor: pointer;
font-family: 'IBM Plex Serif', serif;
transition: background 0.2s ease;
}
.cancel-btn {
background: #6c757d;
color: white;
background: var(--bg-tertiary);
color: var(--text-primary);
}
.cancel-btn:hover {
background: var(--bg-secondary);
}
.save-btn {
background: #007bff;
background: var(--button-primary);
color: white;
}
.save-btn:hover:not(:disabled) {
background: var(--button-primary-hover);
}
.save-btn:disabled {
background: #ccc;
background: var(--text-muted);
cursor: not-allowed;
opacity: 0.6;
}
.loading, .empty {
padding: 2rem;
.loading, .empty, .error {
color: var(--text-muted);
text-align: center;
color: #666;
padding: 1rem;
}
.error {
padding: 1rem;
background: #f8d7da;
color: #721c24;
color: var(--error-text);
background: var(--error-bg);
border: 1px solid var(--error-text);
border-radius: 4px;
margin-bottom: 1rem;
}
</style>

140
src/routes/+page.svelte

@ -340,143 +340,3 @@ @@ -340,143 +340,3 @@
</main>
</div>
<style>
.container {
max-width: 1200px;
margin: 0 auto;
padding: 2rem;
}
header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 2rem;
border-bottom: 1px solid #e5e7eb;
padding-bottom: 1rem;
}
nav {
display: flex;
gap: 1rem;
}
nav a {
text-decoration: none;
color: #3b82f6;
}
.repos-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 2rem;
}
.repos-list {
display: grid;
gap: 1.5rem;
}
.repo-card {
border: 1px solid #e5e7eb;
border-radius: 0.5rem;
background: white;
overflow: hidden;
}
.repo-card-banner {
width: 100%;
height: 200px;
overflow: hidden;
background: #f3f4f6;
}
.repo-card-banner img {
width: 100%;
height: 100%;
object-fit: cover;
}
.repo-card-content {
padding: 1.5rem;
}
.repo-header {
display: flex;
justify-content: space-between;
align-items: flex-start;
margin-bottom: 0.5rem;
gap: 1rem;
}
.repo-header-text {
flex: 1;
}
.repo-card-image {
width: 64px;
height: 64px;
border-radius: 8px;
object-fit: cover;
flex-shrink: 0;
}
.repo-card h3 {
margin: 0;
font-size: 1.25rem;
}
.view-button {
padding: 0.5rem 1rem;
background: #3b82f6;
color: white;
text-decoration: none;
border-radius: 0.25rem;
font-size: 0.875rem;
white-space: nowrap;
}
.view-button:hover {
background: #2563eb;
}
.description {
color: #6b7280;
margin: 0.5rem 0;
}
.clone-urls {
margin: 1rem 0;
}
.clone-urls code {
display: block;
background: #f3f4f6;
padding: 0.5rem;
border-radius: 0.25rem;
margin: 0.25rem 0;
font-family: monospace;
font-size: 0.875rem;
}
.repo-meta {
font-size: 0.875rem;
color: #6b7280;
margin-top: 1rem;
}
.error {
background: #fee2e2;
color: #991b1b;
padding: 1rem;
border-radius: 0.5rem;
margin: 1rem 0;
}
.loading, .empty {
text-align: center;
padding: 2rem;
color: #6b7280;
}
</style>

77
src/routes/docs/nip34/+page.svelte

@ -40,7 +40,7 @@ @@ -40,7 +40,7 @@
});
</script>
<div class="container">
<div class="container-wide">
<header>
<a href="/" class="back-link">← Back to Repositories</a>
<h1>NIP-34 Documentation</h1>
@ -61,56 +61,17 @@ @@ -61,56 +61,17 @@
</div>
<style>
.container {
max-width: 1000px;
margin: 0 auto;
padding: 2rem;
}
header {
margin-bottom: 2rem;
border-bottom: 1px solid #e5e7eb;
padding-bottom: 1rem;
}
.back-link {
color: #3b82f6;
text-decoration: none;
font-size: 0.875rem;
display: inline-block;
margin-bottom: 0.5rem;
}
.back-link:hover {
text-decoration: underline;
}
header h1 {
margin: 0 0 0.5rem 0;
font-size: 2rem;
}
.subtitle {
color: #6b7280;
color: var(--text-muted);
margin: 0;
}
.docs-content {
background: white;
background: var(--card-bg);
padding: 2rem;
border-radius: 0.5rem;
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
}
.loading, .error {
text-align: center;
padding: 2rem;
}
.error {
color: #dc2626;
background: #fee2e2;
border-radius: 0.5rem;
border: 1px solid var(--border-color);
}
:global(.markdown-content) {
@ -121,39 +82,42 @@ @@ -121,39 +82,42 @@
font-size: 2rem;
margin-top: 2rem;
margin-bottom: 1rem;
border-bottom: 2px solid #e5e7eb;
border-bottom: 2px solid var(--border-color);
padding-bottom: 0.5rem;
color: var(--text-primary);
}
:global(.markdown-content h2) {
font-size: 1.5rem;
margin-top: 1.5rem;
margin-bottom: 0.75rem;
color: #1f2937;
color: var(--text-primary);
}
:global(.markdown-content h3) {
font-size: 1.25rem;
margin-top: 1.25rem;
margin-bottom: 0.5rem;
color: #374151;
color: var(--text-primary);
}
:global(.markdown-content code) {
background: #f3f4f6;
background: var(--bg-secondary);
padding: 0.125rem 0.25rem;
border-radius: 0.25rem;
font-family: 'Courier New', monospace;
font-family: 'IBM Plex Mono', monospace;
font-size: 0.875em;
color: var(--text-primary);
}
:global(.markdown-content pre) {
background: #1f2937;
color: #f9fafb;
background: var(--bg-tertiary);
color: var(--text-primary);
padding: 1rem;
border-radius: 0.5rem;
overflow-x: auto;
margin: 1rem 0;
border: 1px solid var(--border-color);
}
:global(.markdown-content pre code) {
@ -176,10 +140,10 @@ @@ -176,10 +140,10 @@
}
:global(.markdown-content blockquote) {
border-left: 4px solid #3b82f6;
border-left: 4px solid var(--accent);
padding-left: 1rem;
margin: 1rem 0;
color: #6b7280;
color: var(--text-secondary);
}
:global(.markdown-content table) {
@ -189,13 +153,18 @@ @@ -189,13 +153,18 @@
}
:global(.markdown-content th, .markdown-content td) {
border: 1px solid #e5e7eb;
border: 1px solid var(--border-color);
padding: 0.5rem;
text-align: left;
}
:global(.markdown-content th) {
background: #f9fafb;
background: var(--bg-secondary);
font-weight: 600;
color: var(--text-primary);
}
:global(.markdown-content td) {
color: var(--text-primary);
}
</style>

286
src/routes/repos/[npub]/[repo]/+page.svelte

@ -1797,15 +1797,15 @@ @@ -1797,15 +1797,15 @@
justify-content: space-between;
align-items: center;
padding: 1rem 2rem;
border-bottom: 1px solid #e5e7eb;
background: white;
border-bottom: 1px solid var(--border-color);
background: var(--card-bg);
}
.repo-banner {
width: 100%;
height: 300px;
overflow: hidden;
background: #f3f4f6;
background: var(--bg-secondary);
margin-bottom: 1rem;
}
@ -1839,21 +1839,21 @@ @@ -1839,21 +1839,21 @@
.repo-description-header {
margin: 0.25rem 0 0 0;
color: #666;
color: var(--text-secondary);
font-size: 0.9rem;
}
.fork-badge {
padding: 0.25rem 0.5rem;
background: #e0e7ff;
color: #3730a3;
background: var(--accent-light);
color: var(--accent);
border-radius: 4px;
font-size: 0.85rem;
margin-left: 0.5rem;
}
.fork-badge a {
color: #3730a3;
color: var(--accent);
text-decoration: none;
}
@ -1862,34 +1862,38 @@ @@ -1862,34 +1862,38 @@
}
.back-link {
color: #3b82f6;
color: var(--link-color);
text-decoration: none;
font-size: 0.875rem;
transition: color 0.2s ease;
}
.back-link:hover {
color: var(--link-hover);
text-decoration: underline;
}
header h1 {
margin: 0;
font-size: 1.5rem;
color: var(--text-primary);
}
.npub {
color: #6b7280;
color: var(--text-muted);
font-size: 0.875rem;
}
.docs-link {
color: #3b82f6;
color: var(--link-color);
text-decoration: none;
font-size: 1.25rem;
margin-left: 0.5rem;
transition: color 0.2s ease;
}
.docs-link:hover {
opacity: 0.7;
color: var(--link-hover);
}
.header-right {
@ -1900,29 +1904,33 @@ @@ -1900,29 +1904,33 @@
.branch-select {
padding: 0.5rem;
border: 1px solid #d1d5db;
border: 1px solid var(--input-border);
border-radius: 0.25rem;
background: white;
background: var(--input-bg);
color: var(--text-primary);
font-family: 'IBM Plex Serif', serif;
}
.auth-status {
font-size: 0.875rem;
color: #6b7280;
color: var(--text-muted);
}
.login-button,
.logout-button {
padding: 0.5rem 1rem;
border: 1px solid #d1d5db;
border: 1px solid var(--input-border);
border-radius: 0.25rem;
background: white;
color: #374151;
background: var(--button-primary);
color: white;
cursor: pointer;
font-size: 0.875rem;
font-family: 'IBM Plex Serif', serif;
transition: background 0.2s ease;
}
.login-button:hover:not(:disabled) {
background: #f9fafb;
background: var(--button-primary-hover);
}
.login-button:disabled {
@ -1931,14 +1939,14 @@ @@ -1931,14 +1939,14 @@
}
.logout-button {
background: #ef4444;
background: var(--error-text);
color: white;
border-color: #ef4444;
border-color: var(--error-text);
margin-left: 0.5rem;
}
.logout-button:hover {
background: #dc2626;
opacity: 0.9;
}
.repo-view {
@ -1956,8 +1964,8 @@ @@ -1956,8 +1964,8 @@
.file-tree {
width: 300px;
border-right: 1px solid #e5e7eb;
background: #f9fafb;
border-right: 1px solid var(--border-color);
background: var(--bg-secondary);
display: flex;
flex-direction: column;
overflow: hidden;
@ -1965,7 +1973,7 @@ @@ -1965,7 +1973,7 @@
.file-tree-header {
padding: 1rem;
border-bottom: 1px solid #e5e7eb;
border-bottom: 1px solid var(--border-color);
display: flex;
justify-content: space-between;
align-items: center;
@ -1974,19 +1982,22 @@ @@ -1974,19 +1982,22 @@
.file-tree-header h2 {
margin: 0;
font-size: 1rem;
color: var(--text-primary);
}
.back-button {
padding: 0.25rem 0.5rem;
font-size: 0.875rem;
background: #f3f4f6;
border: 1px solid #d1d5db;
background: var(--bg-tertiary);
border: 1px solid var(--border-color);
border-radius: 0.25rem;
cursor: pointer;
color: var(--text-primary);
transition: background 0.2s ease;
}
.back-button:hover {
background: #e5e7eb;
background: var(--bg-secondary);
}
.file-list {
@ -2012,19 +2023,21 @@ @@ -2012,19 +2023,21 @@
align-items: center;
gap: 0.5rem;
font-size: 0.875rem;
color: var(--text-primary);
transition: background 0.2s ease;
}
.file-button:hover {
background: #f3f4f6;
background: var(--bg-tertiary);
}
.file-item.selected .file-button {
background: #dbeafe;
color: #1e40af;
background: var(--accent-light);
color: var(--accent);
}
.file-size {
color: #6b7280;
color: var(--text-muted);
font-size: 0.75rem;
margin-left: auto;
}
@ -2034,21 +2047,21 @@ @@ -2034,21 +2047,21 @@
display: flex;
flex-direction: column;
overflow: hidden;
background: white;
background: var(--card-bg);
}
.editor-header {
padding: 0.75rem 1rem;
border-bottom: 1px solid #e5e7eb;
border-bottom: 1px solid var(--border-color);
display: flex;
justify-content: space-between;
align-items: center;
}
.file-path {
font-family: monospace;
font-family: 'IBM Plex Mono', monospace;
font-size: 0.875rem;
color: #374151;
color: var(--text-primary);
}
.editor-actions {
@ -2058,27 +2071,30 @@ @@ -2058,27 +2071,30 @@
}
.unsaved-indicator {
color: #f59e0b;
color: var(--warning-text);
font-size: 0.875rem;
}
.save-button {
padding: 0.5rem 1rem;
background: #3b82f6;
background: var(--button-primary);
color: white;
border: none;
border-radius: 0.25rem;
cursor: pointer;
font-size: 0.875rem;
font-family: 'IBM Plex Serif', serif;
transition: background 0.2s ease;
}
.save-button:hover:not(:disabled) {
background: #2563eb;
background: var(--button-primary-hover);
}
.save-button:disabled {
background: #9ca3af;
background: var(--text-muted);
cursor: not-allowed;
opacity: 0.6;
}
.editor-container {
@ -2091,21 +2107,22 @@ @@ -2091,21 +2107,22 @@
display: flex;
align-items: center;
justify-content: center;
color: #6b7280;
color: var(--text-muted);
}
.loading {
padding: 2rem;
text-align: center;
color: #6b7280;
color: var(--text-muted);
}
.error {
background: #fee2e2;
color: #991b1b;
background: var(--error-bg);
color: var(--error-text);
padding: 1rem;
margin: 1rem;
border-radius: 0.5rem;
border: 1px solid var(--error-text);
}
.modal-overlay {
@ -2122,31 +2139,45 @@ @@ -2122,31 +2139,45 @@
}
.modal {
background: white;
background: var(--card-bg);
padding: 2rem;
border-radius: 0.5rem;
min-width: 400px;
max-width: 600px;
border: 1px solid var(--border-color);
}
.modal h3 {
margin: 0 0 1rem 0;
color: var(--text-primary);
}
.modal label {
display: block;
margin-bottom: 1rem;
color: var(--text-primary);
}
.modal textarea {
.modal input,
.modal textarea,
.modal select {
width: 100%;
padding: 0.5rem;
border: 1px solid #d1d5db;
border: 1px solid var(--input-border);
border-radius: 0.25rem;
font-family: inherit;
font-family: 'IBM Plex Serif', serif;
background: var(--input-bg);
color: var(--text-primary);
margin-top: 0.5rem;
}
.modal input:focus,
.modal textarea:focus,
.modal select:focus {
outline: none;
border-color: var(--input-focus);
}
.modal-actions {
display: flex;
justify-content: flex-end;
@ -2155,14 +2186,26 @@ @@ -2155,14 +2186,26 @@
.cancel-button {
padding: 0.5rem 1rem;
background: #f3f4f6;
border: 1px solid #d1d5db;
background: var(--bg-tertiary);
border: 1px solid var(--border-color);
border-radius: 0.25rem;
cursor: pointer;
color: var(--text-primary);
font-family: 'IBM Plex Serif', serif;
transition: background 0.2s ease;
}
.cancel-button:hover {
background: #e5e7eb;
background: var(--bg-secondary);
}
.save-button {
background: var(--button-primary);
color: white;
}
.save-button:hover:not(:disabled) {
background: var(--button-primary-hover);
}
/* Tabs */
@ -2170,8 +2213,8 @@ @@ -2170,8 +2213,8 @@
display: flex;
gap: 0.5rem;
padding: 0.5rem 2rem;
border-bottom: 1px solid #e5e7eb;
background: white;
border-bottom: 1px solid var(--border-color);
background: var(--card-bg);
}
.tab-button {
@ -2181,16 +2224,18 @@ @@ -2181,16 +2224,18 @@
border-bottom: 2px solid transparent;
cursor: pointer;
font-size: 0.875rem;
color: #6b7280;
color: var(--text-muted);
font-family: 'IBM Plex Serif', serif;
transition: color 0.2s ease, border-color 0.2s ease;
}
.tab-button:hover {
color: #374151;
color: var(--text-primary);
}
.tab-button.active {
color: #3b82f6;
border-bottom-color: #3b82f6;
color: var(--accent);
border-bottom-color: var(--accent);
}
/* File tree actions */
@ -2202,15 +2247,17 @@ @@ -2202,15 +2247,17 @@
.create-file-button, .create-branch-button, .create-tag-button {
padding: 0.25rem 0.5rem;
font-size: 0.75rem;
background: #3b82f6;
background: var(--button-primary);
color: white;
border: none;
border-radius: 0.25rem;
cursor: pointer;
font-family: 'IBM Plex Serif', serif;
transition: background 0.2s ease;
}
.create-file-button:hover, .create-branch-button:hover, .create-tag-button:hover {
background: #2563eb;
background: var(--button-primary-hover);
}
.delete-file-button {
@ -2238,8 +2285,8 @@ @@ -2238,8 +2285,8 @@
/* History sidebar */
.history-sidebar, .tags-sidebar {
width: 300px;
border-right: 1px solid #e5e7eb;
background: #f9fafb;
border-right: 1px solid var(--border-color);
background: var(--bg-secondary);
display: flex;
flex-direction: column;
overflow: hidden;
@ -2247,7 +2294,7 @@ @@ -2247,7 +2294,7 @@
.history-header, .tags-header {
padding: 1rem;
border-bottom: 1px solid #e5e7eb;
border-bottom: 1px solid var(--border-color);
display: flex;
justify-content: space-between;
align-items: center;
@ -2256,19 +2303,22 @@ @@ -2256,19 +2303,22 @@
.history-header h2, .tags-header h2 {
margin: 0;
font-size: 1rem;
color: var(--text-primary);
}
.refresh-button {
padding: 0.25rem 0.5rem;
font-size: 0.75rem;
background: #f3f4f6;
border: 1px solid #d1d5db;
background: var(--bg-tertiary);
border: 1px solid var(--border-color);
border-radius: 0.25rem;
cursor: pointer;
color: var(--text-primary);
transition: background 0.2s ease;
}
.refresh-button:hover {
background: #e5e7eb;
background: var(--bg-secondary);
}
.commit-list, .tag-list {
@ -2294,29 +2344,29 @@ @@ -2294,29 +2344,29 @@
}
.commit-button:hover {
background: #f3f4f6;
background: var(--bg-tertiary);
}
.commit-item.selected .commit-button {
background: #dbeafe;
background: var(--accent-light);
}
.commit-hash {
font-family: monospace;
font-family: 'IBM Plex Mono', monospace;
font-size: 0.75rem;
color: #6b7280;
color: var(--text-muted);
margin-bottom: 0.25rem;
}
.commit-message {
font-weight: 500;
margin-bottom: 0.25rem;
color: #374151;
color: var(--text-primary);
}
.commit-meta {
font-size: 0.75rem;
color: #6b7280;
color: var(--text-muted);
display: flex;
gap: 1rem;
}
@ -2327,20 +2377,20 @@ @@ -2327,20 +2377,20 @@
.tag-name {
font-weight: 500;
color: #3b82f6;
color: var(--link-color);
margin-bottom: 0.25rem;
}
.tag-hash {
font-family: monospace;
font-family: 'IBM Plex Mono', monospace;
font-size: 0.75rem;
color: #6b7280;
color: var(--text-muted);
margin-bottom: 0.25rem;
}
.tag-message {
font-size: 0.875rem;
color: #6b7280;
color: var(--text-muted);
}
/* Diff view */
@ -2356,25 +2406,28 @@ @@ -2356,25 +2406,28 @@
align-items: center;
margin-bottom: 1rem;
padding-bottom: 0.5rem;
border-bottom: 1px solid #e5e7eb;
border-bottom: 1px solid var(--border-color);
}
.diff-header h3 {
margin: 0;
color: var(--text-primary);
}
.close-button {
padding: 0.25rem 0.5rem;
background: #f3f4f6;
border: 1px solid #d1d5db;
background: var(--bg-tertiary);
border: 1px solid var(--border-color);
border-radius: 0.25rem;
cursor: pointer;
font-size: 1.25rem;
line-height: 1;
color: var(--text-primary);
transition: background 0.2s ease;
}
.close-button:hover {
background: #e5e7eb;
background: var(--bg-secondary);
}
.diff-file {
@ -2386,14 +2439,15 @@ @@ -2386,14 +2439,15 @@
justify-content: space-between;
align-items: center;
padding: 0.5rem;
background: #f3f4f6;
background: var(--bg-secondary);
border-radius: 0.25rem;
margin-bottom: 0.5rem;
}
.diff-file-name {
font-family: monospace;
font-family: 'IBM Plex Mono', monospace;
font-weight: 500;
color: var(--text-primary);
}
.diff-stats {
@ -2402,25 +2456,26 @@ @@ -2402,25 +2456,26 @@
}
.additions {
color: #10b981;
color: var(--success-text);
}
.deletions {
color: #ef4444;
color: var(--error-text);
}
.diff-content {
background: #1f2937;
color: #f9fafb;
background: var(--bg-tertiary);
color: var(--text-primary);
padding: 1rem;
border-radius: 0.25rem;
overflow-x: auto;
font-size: 0.875rem;
line-height: 1.5;
border: 1px solid var(--border-color);
}
.diff-content code {
font-family: 'Courier New', monospace;
font-family: 'IBM Plex Mono', monospace;
white-space: pre;
}
@ -2431,11 +2486,12 @@ @@ -2431,11 +2486,12 @@
.read-only-editor :global(.hljs) {
padding: 1rem;
background: #1e1e1e;
color: #d4d4d4;
background: var(--bg-tertiary);
color: var(--text-primary);
border-radius: 4px;
overflow-x: auto;
margin: 0;
border: 1px solid var(--border-color);
}
.read-only-editor :global(pre) {
@ -2444,16 +2500,17 @@ @@ -2444,16 +2500,17 @@
}
.read-only-editor :global(code) {
font-family: 'Courier New', Courier, monospace;
font-family: 'IBM Plex Mono', monospace;
font-size: 14px;
line-height: 1.5;
}
.readme-content :global(.hljs) {
background: #f5f5f5;
background: var(--bg-secondary);
padding: 1rem;
border-radius: 4px;
overflow-x: auto;
border: 1px solid var(--border-light);
}
.readme-content :global(pre.hljs) {
@ -2463,8 +2520,8 @@ @@ -2463,8 +2520,8 @@
/* Issues and PRs */
.issues-sidebar, .prs-sidebar {
width: 300px;
border-right: 1px solid #e5e7eb;
background: #f9fafb;
border-right: 1px solid var(--border-color);
background: var(--bg-secondary);
display: flex;
flex-direction: column;
overflow: hidden;
@ -2472,7 +2529,7 @@ @@ -2472,7 +2529,7 @@
.issues-header, .prs-header {
padding: 1rem;
border-bottom: 1px solid #e5e7eb;
border-bottom: 1px solid var(--border-color);
display: flex;
justify-content: space-between;
align-items: center;
@ -2481,20 +2538,23 @@ @@ -2481,20 +2538,23 @@
.issues-header h2, .prs-header h2 {
margin: 0;
font-size: 1rem;
color: var(--text-primary);
}
.create-issue-button, .create-pr-button {
padding: 0.25rem 0.5rem;
font-size: 0.75rem;
background: #3b82f6;
background: var(--button-primary);
color: white;
border: none;
border-radius: 0.25rem;
cursor: pointer;
font-family: 'IBM Plex Serif', serif;
transition: background 0.2s ease;
}
.create-issue-button:hover, .create-pr-button:hover {
background: #2563eb;
background: var(--button-primary-hover);
}
.issue-list, .pr-list {
@ -2507,12 +2567,13 @@ @@ -2507,12 +2567,13 @@
.issue-item, .pr-item {
padding: 0.75rem 1rem;
border-bottom: 1px solid #e5e7eb;
border-bottom: 1px solid var(--border-color);
cursor: pointer;
transition: background 0.2s ease;
}
.issue-item:hover, .pr-item:hover {
background: #f3f4f6;
background: var(--bg-tertiary);
}
.issue-header, .pr-header {
@ -2531,51 +2592,54 @@ @@ -2531,51 +2592,54 @@
}
.issue-status.open, .pr-status.open {
background: #dbeafe;
color: #1e40af;
background: var(--accent-light);
color: var(--accent);
}
.issue-status.closed, .pr-status.closed {
background: #fee2e2;
color: #991b1b;
background: var(--error-bg);
color: var(--error-text);
}
.issue-status.resolved, .pr-status.merged {
background: #d1fae5;
color: #065f46;
background: var(--success-bg);
color: var(--success-text);
}
.issue-subject, .pr-subject {
font-weight: 500;
flex: 1;
color: var(--text-primary);
}
.issue-meta, .pr-meta {
font-size: 0.75rem;
color: #6b7280;
color: var(--text-muted);
display: flex;
gap: 0.75rem;
}
.pr-commit {
font-family: monospace;
font-family: 'IBM Plex Mono', monospace;
}
.issues-content, .prs-content {
flex: 1;
overflow-y: auto;
padding: 2rem;
background: var(--card-bg);
}
.issue-detail, .pr-detail {
margin-bottom: 2rem;
padding-bottom: 2rem;
border-bottom: 1px solid #e5e7eb;
border-bottom: 1px solid var(--border-color);
}
.issue-detail h3, .pr-detail h3 {
margin: 0 0 0.5rem 0;
font-size: 1.5rem;
color: var(--text-primary);
}
.issue-meta-detail, .pr-meta-detail {
@ -2584,12 +2648,12 @@ @@ -2584,12 +2648,12 @@
gap: 1rem;
margin-bottom: 1rem;
font-size: 0.875rem;
color: #6b7280;
color: var(--text-muted);
}
.issue-body, .pr-body {
line-height: 1.6;
color: #374151;
color: var(--text-primary);
}
.verification-status {
@ -2601,12 +2665,12 @@ @@ -2601,12 +2665,12 @@
}
.verification-status.verified {
background: #d1fae5;
color: #065f46;
background: var(--success-bg);
color: var(--success-text);
}
.verification-status.unverified {
background: #fee2e2;
color: #991b1b;
background: var(--error-bg);
color: var(--error-text);
}
</style>

154
src/routes/repos/[npub]/[repo]/settings/+page.svelte

@ -192,157 +192,3 @@ @@ -192,157 +192,3 @@
</main>
</div>
<style>
.container {
max-width: 800px;
margin: 0 auto;
padding: 2rem;
}
.back-link {
display: inline-block;
margin-bottom: 1rem;
color: #007bff;
text-decoration: none;
}
.back-link:hover {
text-decoration: underline;
}
.settings-form {
background: white;
border-radius: 8px;
padding: 2rem;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
.form-section {
margin-bottom: 2rem;
padding-bottom: 2rem;
border-bottom: 1px solid #e0e0e0;
}
.form-section:last-of-type {
border-bottom: none;
}
.form-section h2 {
margin-bottom: 1rem;
color: #333;
}
label {
display: block;
margin-bottom: 1rem;
font-weight: 500;
}
label input[type="text"],
label input[type="url"],
label textarea {
width: 100%;
padding: 0.75rem;
border: 1px solid #ddd;
border-radius: 4px;
font-size: 1rem;
margin-top: 0.5rem;
}
label input[type="checkbox"] {
margin-right: 0.5rem;
}
.help-text {
color: #666;
font-size: 0.9rem;
margin-bottom: 1rem;
}
.array-input {
display: flex;
gap: 0.5rem;
margin-bottom: 0.5rem;
align-items: center;
}
.array-input input {
flex: 1;
}
.add-button, .remove-button {
padding: 0.5rem 1rem;
border: 1px solid #ddd;
border-radius: 4px;
background: white;
cursor: pointer;
font-size: 0.9rem;
}
.add-button {
color: #007bff;
border-color: #007bff;
}
.add-button:hover {
background: #f0f8ff;
}
.remove-button {
color: #d32f2f;
border-color: #d32f2f;
}
.remove-button:hover {
background: #ffebee;
}
.form-actions {
display: flex;
gap: 1rem;
justify-content: flex-end;
margin-top: 2rem;
}
.cancel-button, .save-button {
padding: 0.75rem 1.5rem;
border: none;
border-radius: 4px;
cursor: pointer;
font-size: 1rem;
}
.cancel-button {
background: #f5f5f5;
color: #333;
}
.cancel-button:hover {
background: #e0e0e0;
}
.save-button {
background: #007bff;
color: white;
}
.save-button:hover:not(:disabled) {
background: #0056b3;
}
.save-button:disabled {
background: #ccc;
cursor: not-allowed;
}
.loading, .error {
text-align: center;
padding: 2rem;
}
.error {
color: #d32f2f;
background: #ffebee;
border-radius: 4px;
}
</style>

129
src/routes/search/+page.svelte

@ -145,132 +145,3 @@ @@ -145,132 +145,3 @@
</main>
</div>
<style>
.container {
max-width: 1200px;
margin: 0 auto;
padding: 2rem;
}
.back-link {
display: inline-block;
margin-bottom: 1rem;
color: #007bff;
text-decoration: none;
}
.back-link:hover {
text-decoration: underline;
}
.search-form {
display: flex;
gap: 1rem;
margin-bottom: 2rem;
align-items: center;
}
.search-input {
flex: 1;
padding: 0.75rem;
font-size: 1rem;
border: 1px solid #ddd;
border-radius: 4px;
}
.search-type-select {
padding: 0.75rem;
border: 1px solid #ddd;
border-radius: 4px;
}
.search-button {
padding: 0.75rem 1.5rem;
background: #007bff;
color: white;
border: none;
border-radius: 4px;
cursor: pointer;
font-size: 1rem;
}
.search-button:hover:not(:disabled) {
background: #0056b3;
}
.search-button:disabled {
background: #ccc;
cursor: not-allowed;
}
.results-header {
margin-bottom: 1.5rem;
}
.results-section {
margin-bottom: 2rem;
}
.results-section h3 {
margin-bottom: 1rem;
color: #333;
}
.repo-list, .code-list {
display: flex;
flex-direction: column;
gap: 1rem;
}
.repo-item, .code-item {
border: 1px solid #e0e0e0;
border-radius: 8px;
padding: 1rem;
cursor: pointer;
transition: box-shadow 0.2s;
}
.repo-item:hover, .code-item:hover {
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}
.repo-item h4 {
margin: 0 0 0.5rem 0;
color: #007bff;
}
.repo-description {
color: #666;
margin: 0.5rem 0;
}
.repo-meta {
margin-top: 0.5rem;
font-size: 0.9rem;
color: #999;
}
.code-file-path {
font-family: monospace;
color: #333;
margin-bottom: 0.5rem;
}
.code-repo {
font-size: 0.9rem;
color: #666;
}
.no-results, .error {
text-align: center;
padding: 2rem;
color: #666;
}
.error {
color: #d32f2f;
background: #ffebee;
border-radius: 4px;
padding: 1rem;
}
</style>

133
src/routes/signup/+page.svelte

@ -348,136 +348,3 @@ @@ -348,136 +348,3 @@
</main>
</div>
<style>
.container {
max-width: 800px;
margin: 0 auto;
padding: 2rem;
}
header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 2rem;
border-bottom: 1px solid #e5e7eb;
padding-bottom: 1rem;
}
nav {
display: flex;
gap: 1rem;
}
nav a {
text-decoration: none;
color: #3b82f6;
}
.warning {
background: #fef3c7;
border: 1px solid #f59e0b;
border-radius: 0.5rem;
padding: 1rem;
margin-bottom: 1.5rem;
}
.error {
background: #fee2e2;
color: #991b1b;
padding: 1rem;
border-radius: 0.5rem;
margin-bottom: 1.5rem;
}
.success {
background: #d1fae5;
color: #065f46;
padding: 1rem;
border-radius: 0.5rem;
margin-bottom: 1.5rem;
}
form {
display: flex;
flex-direction: column;
gap: 1.5rem;
}
.form-group {
display: flex;
flex-direction: column;
gap: 0.5rem;
}
label, .label {
font-weight: 500;
display: flex;
flex-direction: column;
gap: 0.25rem;
}
label small, .label small {
font-weight: normal;
color: #6b7280;
font-size: 0.875rem;
}
input, textarea {
padding: 0.75rem;
border: 1px solid #d1d5db;
border-radius: 0.375rem;
font-size: 1rem;
}
input:disabled, textarea:disabled {
background: #f3f4f6;
cursor: not-allowed;
}
.input-group {
display: flex;
gap: 0.5rem;
align-items: center;
}
.input-group input {
flex: 1;
}
button {
padding: 0.5rem 1rem;
background: #3b82f6;
color: white;
border: none;
border-radius: 0.375rem;
cursor: pointer;
font-size: 0.875rem;
}
button:disabled {
background: #9ca3af;
cursor: not-allowed;
}
.add-button {
background: #10b981;
margin-top: 0.5rem;
}
.form-actions {
display: flex;
gap: 1rem;
align-items: center;
}
.form-actions button[type="submit"] {
padding: 0.75rem 1.5rem;
font-size: 1rem;
}
.cancel-link {
color: #6b7280;
text-decoration: none;
}
</style>

79
src/routes/users/[npub]/+page.svelte

@ -169,30 +169,13 @@ @@ -169,30 +169,13 @@
</div>
<style>
.container {
max-width: 1200px;
margin: 0 auto;
padding: 2rem;
}
.back-link {
display: inline-block;
margin-bottom: 1rem;
color: #007bff;
text-decoration: none;
}
.back-link:hover {
text-decoration: underline;
}
.profile-header {
display: flex;
gap: 1.5rem;
align-items: flex-start;
margin-bottom: 2rem;
padding-bottom: 2rem;
border-bottom: 1px solid #e0e0e0;
border-bottom: 1px solid var(--border-color);
}
.profile-picture {
@ -206,7 +189,7 @@ @@ -206,7 +189,7 @@
width: 80px;
height: 80px;
border-radius: 50%;
background: #007bff;
background: var(--accent);
color: white;
display: flex;
align-items: center;
@ -215,77 +198,25 @@ @@ -215,77 +198,25 @@
font-weight: bold;
}
.profile-info h1 {
margin: 0 0 0.5rem 0;
}
.profile-about {
color: #666;
color: var(--text-secondary);
margin: 0.5rem 0;
}
.profile-npub {
color: #999;
color: var(--text-muted);
font-size: 0.9rem;
margin: 0.5rem 0 0 0;
font-family: monospace;
font-family: 'IBM Plex Mono', monospace;
}
.repos-section {
margin-top: 2rem;
}
.repos-section h2 {
margin-bottom: 1rem;
}
.repo-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
gap: 1.5rem;
}
.repo-card {
border: 1px solid #e0e0e0;
border-radius: 8px;
padding: 1.5rem;
cursor: pointer;
transition: box-shadow 0.2s;
}
.repo-card:hover {
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}
.repo-card h3 {
margin: 0 0 0.5rem 0;
color: #007bff;
}
.repo-description {
color: #666;
margin: 0.5rem 0;
font-size: 0.9rem;
}
.repo-meta {
margin-top: 1rem;
padding-top: 1rem;
border-top: 1px solid #f0f0f0;
font-size: 0.85rem;
color: #999;
}
.loading, .empty, .error {
text-align: center;
padding: 2rem;
color: #666;
}
.error {
color: #d32f2f;
background: #ffebee;
border-radius: 4px;
padding: 1rem;
}
</style>

Loading…
Cancel
Save