diff options
author | Robby Zambito <contact@robbyzambito.me> | 2025-08-07 00:37:09 -0400 |
---|---|---|
committer | Robby Zambito <contact@robbyzambito.me> | 2025-08-07 00:37:09 -0400 |
commit | 431037f4f6a8d31c523287e1bdbd88b6718de859 (patch) | |
tree | 80faff9fec2342051f78b15ffe1c2a87198b1a95 /static/api-docs-styles.css | |
parent | 6f1fb66792bd35166de5a338e5d174b22fa2c2ce (diff) |
Added API Docs
Prompt:
Generate a simple API docs page for the current public API. Include the endpoints that are used in the previously defined pages.
Diffstat (limited to 'static/api-docs-styles.css')
-rw-r--r-- | static/api-docs-styles.css | 877 |
1 files changed, 877 insertions, 0 deletions
diff --git a/static/api-docs-styles.css b/static/api-docs-styles.css new file mode 100644 index 0000000..378f28a --- /dev/null +++ b/static/api-docs-styles.css @@ -0,0 +1,877 @@ +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +:root { + --primary-color: #6366f1; + --primary-dark: #4f46e5; + --secondary-color: #f1f5f9; + --text-primary: #1e293b; + --text-secondary: #64748b; + --text-muted: #94a3b8; + --background: #ffffff; + --surface: #f8fafc; + --border: #e2e8f0; + --border-light: #f1f5f9; + --success: #10b981; + --warning: #f59e0b; + --error: #ef4444; + --info: #3b82f6; + --shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1); + --shadow-lg: 0 20px 25px -5px rgba(0, 0, 0, 0.1); + --gradient: linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%); + --code-bg: #1e293b; + --code-text: #e2e8f0; +} + +body { + font-family: 'Inter', sans-serif; + line-height: 1.6; + color: var(--text-primary); + background: var(--background); +} + +/* Navigation */ +.navbar { + position: fixed; + top: 0; + width: 100%; + background: rgba(255, 255, 255, 0.95); + backdrop-filter: blur(10px); + z-index: 1000; + border-bottom: 1px solid var(--border); +} + +.nav-container { + max-width: 1200px; + margin: 0 auto; + padding: 1rem 2rem; + display: flex; + justify-content: space-between; + align-items: center; +} + +.nav-logo { + font-size: 1.5rem; + font-weight: 700; + background: var(--gradient); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; + text-decoration: none; +} + +.nav-menu { + display: flex; + list-style: none; + gap: 2rem; +} + +.nav-link { + text-decoration: none; + color: var(--text-primary); + font-weight: 500; + transition: color 0.3s ease; +} + +.nav-link:hover { + color: var(--primary-color); +} + +.nav-actions { + display: flex; + align-items: center; + gap: 1rem; +} + +/* Buttons */ +.btn { + padding: 0.75rem 1.5rem; + border: none; + border-radius: 0.5rem; + font-weight: 600; + cursor: pointer; + transition: all 0.3s ease; + text-decoration: none; + display: inline-flex; + align-items: center; + justify-content: center; + gap: 0.5rem; + font-size: 0.875rem; +} + +.btn-primary { + background: var(--gradient); + color: white; + box-shadow: var(--shadow); +} + +.btn-primary:hover { + transform: translateY(-2px); + box-shadow: var(--shadow-lg); +} + +.btn-secondary { + background: white; + color: var(--text-primary); + border: 2px solid var(--border); +} + +.btn-secondary:hover { + border-color: var(--primary-color); + color: var(--primary-color); +} + +.btn-ghost { + background: transparent; + color: var(--text-secondary); + border: none; +} + +.btn-ghost:hover { + background: var(--surface); + color: var(--text-primary); +} + +/* Layout */ +.docs-layout { + display: flex; + margin-top: 80px; + min-height: calc(100vh - 80px); +} + +.sidebar { + width: 280px; + background: var(--surface); + border-right: 1px solid var(--border); + position: sticky; + top: 80px; + height: calc(100vh - 80px); + overflow-y: auto; +} + +.sidebar-content { + padding: 2rem 1.5rem; +} + +.sidebar-header { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 2rem; + padding-bottom: 1rem; + border-bottom: 1px solid var(--border); +} + +.sidebar-header h3 { + font-size: 1.25rem; + font-weight: 600; +} + +.api-version { + background: var(--primary-color); + color: white; + padding: 0.25rem 0.75rem; + border-radius: 1rem; + font-size: 0.75rem; + font-weight: 600; +} + +.sidebar-nav { + display: flex; + flex-direction: column; + gap: 1.5rem; +} + +.nav-section h4 { + font-size: 0.875rem; + font-weight: 600; + color: var(--text-secondary); + text-transform: uppercase; + letter-spacing: 0.05em; + margin-bottom: 0.75rem; +} + +.nav-section ul { + list-style: none; + display: flex; + flex-direction: column; + gap: 0.25rem; +} + +.nav-item { + display: block; + padding: 0.5rem 0.75rem; + color: var(--text-secondary); + text-decoration: none; + border-radius: 0.375rem; + font-size: 0.875rem; + transition: all 0.3s ease; +} + +.nav-item:hover, +.nav-item.active { + background: var(--primary-color); + color: white; +} + +.main-content { + flex: 1; + overflow-x: hidden; +} + +.content-container { + max-width: 800px; + padding: 2rem; +} + +/* Documentation Sections */ +.doc-section { + margin-bottom: 4rem; + scroll-margin-top: 100px; +} + +.doc-section h1 { + font-size: 3rem; + font-weight: 700; + margin-bottom: 1rem; + background: var(--gradient); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; +} + +.doc-section h2 { + font-size: 2rem; + font-weight: 700; + margin-bottom: 1.5rem; + color: var(--text-primary); +} + +.doc-section h3 { + font-size: 1.5rem; + font-weight: 600; + margin-bottom: 1rem; + margin-top: 2rem; +} + +.doc-section h4 { + font-size: 1.125rem; + font-weight: 600; + margin-bottom: 0.75rem; + margin-top: 1.5rem; +} + +.lead { + font-size: 1.25rem; + color: var(--text-secondary); + margin-bottom: 2rem; + line-height: 1.7; +} + +.doc-section p { + margin-bottom: 1rem; + color: var(--text-secondary); + line-height: 1.7; +} + +.doc-section code { + background: var(--surface); + padding: 0.125rem 0.375rem; + border-radius: 0.25rem; + font-family: 'JetBrains Mono', monospace; + font-size: 0.875rem; + color: var(--primary-color); +} + +/* Info Cards */ +.info-card { + background: white; + border: 1px solid var(--border); + border-radius: 0.75rem; + margin: 2rem 0; + overflow: hidden; +} + +.info-header { + background: var(--surface); + padding: 1rem 1.5rem; + border-bottom: 1px solid var(--border); +} + +.info-header h3 { + font-size: 1rem; + font-weight: 600; + margin: 0; +} + +/* Features Grid */ +.features-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); + gap: 1.5rem; + margin: 2rem 0; +} + +.feature-card { + background: white; + padding: 1.5rem; + border-radius: 0.75rem; + border: 1px solid var(--border); + text-align: center; +} + +.feature-icon { + font-size: 2rem; + margin-bottom: 1rem; +} + +.feature-card h4 { + font-size: 1.125rem; + font-weight: 600; + margin-bottom: 0.5rem; + margin-top: 0; +} + +.feature-card p { + color: var(--text-secondary); + font-size: 0.875rem; + margin: 0; +} + +/* Code Examples */ +.code-example { + margin: 1.5rem 0; + border-radius: 0.75rem; + overflow: hidden; + border: 1px solid var(--border); +} + +.code-header { + background: var(--surface); + padding: 0.75rem 1rem; + border-bottom: 1px solid var(--border); + font-size: 0.875rem; + font-weight: 500; + color: var(--text-secondary); +} + +.code-block { + position: relative; + background: var(--code-bg); + color: var(--code-text); + padding: 1.5rem; + overflow-x: auto; +} + +.code-block pre { + margin: 0; + font-family: 'JetBrains Mono', monospace; + font-size: 0.875rem; + line-height: 1.5; +} + +.code-block code { + background: none; + color: inherit; + padding: 0; + border-radius: 0; +} + +.copy-btn { + position: absolute; + top: 1rem; + right: 1rem; + background: rgba(255, 255, 255, 0.1); + border: 1px solid rgba(255, 255, 255, 0.2); + color: white; + padding: 0.5rem 0.75rem; + border-radius: 0.375rem; + font-size: 0.75rem; + cursor: pointer; + transition: all 0.3s ease; +} + +.copy-btn:hover { + background: rgba(255, 255, 255, 0.2); +} + +.copy-btn.copied { + background: var(--success); + border-color: var(--success); +} + +/* Alerts */ +.alert { + display: flex; + align-items: flex-start; + gap: 1rem; + padding: 1rem 1.5rem; + border-radius: 0.75rem; + margin: 1.5rem 0; +} + +.alert-info { + background: rgba(59, 130, 246, 0.1); + border: 1px solid rgba(59, 130, 246, 0.2); +} + +.alert-icon { + font-size: 1.25rem; + margin-top: 0.125rem; +} + +.alert-content { + flex: 1; + color: var(--text-primary); + line-height: 1.6; +} + +.alert-content strong { + font-weight: 600; +} + +.alert-link { + color: var(--primary-color); + text-decoration: none; +} + +.alert-link:hover { + text-decoration: underline; +} + +/* Tables */ +.table-container { + margin: 1.5rem 0; + overflow-x: auto; + border-radius: 0.75rem; + border: 1px solid var(--border); +} + +.api-table { + width: 100%; + border-collapse: collapse; + background: white; +} + +.api-table th { + background: var(--surface); + padding: 1rem; + text-align: left; + font-weight: 600; + font-size: 0.875rem; + color: var(--text-primary); + border-bottom: 1px solid var(--border); +} + +.api-table td { + padding: 1rem; + border-bottom: 1px solid var(--border-light); + font-size: 0.875rem; + color: var(--text-secondary); +} + +.api-table tr:last-child td { + border-bottom: none; +} + +.api-table code { + background: var(--surface); + padding: 0.125rem 0.375rem; + border-radius: 0.25rem; + font-family: 'JetBrains Mono', monospace; + font-size: 0.75rem; + color: var(--primary-color); +} + +/* Status Codes and Badges */ +.status-code { + padding: 0.25rem 0.75rem; + border-radius: 0.375rem; + font-size: 0.75rem; + font-weight: 600; + font-family: 'JetBrains Mono', monospace; +} + +.status-code.success { + background: rgba(16, 185, 129, 0.1); + color: var(--success); +} + +.status-code.client-error { + background: rgba(245, 158, 11, 0.1); + color: var(--warning); +} + +.status-code.server-error { + background: rgba(239, 68, 68, 0.1); + color: var(--error); +} + +.plan-badge { + padding: 0.25rem 0.75rem; + border-radius: 1rem; + font-size: 0.75rem; + font-weight: 600; + text-transform: uppercase; +} + +.plan-badge.free { + background: rgba(100, 116, 139, 0.1); + color: var(--text-secondary); +} + +.plan-badge.pro { + background: rgba(99, 102, 241, 0.1); + color: var(--primary-color); +} + +.plan-badge.enterprise { + background: rgba(16, 185, 129, 0.1); + color: var(--success); +} + +.required { + color: var(--error); + font-weight: 600; + font-size: 0.75rem; +} + +.optional { + color: var(--text-muted); + font-weight: 500; + font-size: 0.75rem; +} + +/* Endpoints */ +.endpoint { + background: white; + border: 1px solid var(--border); + border-radius: 0.75rem; + margin: 2rem 0; + overflow: hidden; +} + +.endpoint-header { + background: var(--surface); + padding: 1rem 1.5rem; + border-bottom: 1px solid var(--border); + display: flex; + align-items: center; + gap: 1rem; +} + +.method { + padding: 0.375rem 0.75rem; + border-radius: 0.375rem; + font-size: 0.75rem; + font-weight: 700; + font-family: 'JetBrains Mono', monospace; + text-transform: uppercase; +} + +.method.get { + background: rgba(16, 185, 129, 0.1); + color: var(--success); +} + +.method.post { + background: rgba(59, 130, 246, 0.1); + color: var(--info); +} + +.method.put { + background: rgba(245, 158, 11, 0.1); + color: var(--warning); +} + +.method.delete { + background: rgba(239, 68, 68, 0.1); + color: var(--error); +} + +.path { + font-family: 'JetBrains Mono', monospace; + font-size: 1rem; + font-weight: 600; + color: var(--text-primary); +} + +.endpoint > p { + padding: 1.5rem; + margin: 0; + color: var(--text-secondary); +} + +.endpoint h4 { + padding: 0 1.5rem; + margin-top: 1.5rem; + margin-bottom: 0.75rem; +} + +.endpoint .code-example { + margin: 1rem 1.5rem; +} + +.endpoint .table-container { + margin: 1rem 1.5rem; +} + +/* SDK Grid */ +.sdk-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); + gap: 1.5rem; + margin: 2rem 0; +} + +.sdk-card { + background: white; + border: 1px solid var(--border); + border-radius: 0.75rem; + padding: 1.5rem; +} + +.sdk-header { + display: flex; + align-items: center; + gap: 1rem; + margin-bottom: 1rem; +} + +.sdk-icon { + font-size: 2rem; +} + +.sdk-header h4 { + margin: 0; + font-size: 1.125rem; + font-weight: 600; +} + +.sdk-card p { + color: var(--text-secondary); + margin-bottom: 1.5rem; +} + +.sdk-actions { + display: flex; + gap: 0.75rem; +} + +/* Postman Card */ +.postman-card { + background: white; + border: 1px solid var(--border); + border-radius: 0.75rem; + padding: 1.5rem; + display: flex; + justify-content: space-between; + align-items: center; + margin: 1.5rem 0; +} + +.postman-content { + display: flex; + align-items: center; + gap: 1rem; +} + +.postman-icon { + font-size: 2rem; +} + +.postman-content h4 { + margin: 0 0 0.25rem 0; + font-size: 1.125rem; + font-weight: 600; +} + +.postman-content p { + margin: 0; + color: var(--text-secondary); + font-size: 0.875rem; +} + +/* Changelog */ +.changelog { + display: flex; + flex-direction: column; + gap: 2rem; +} + +.changelog-item { + display: flex; + gap: 2rem; + padding-bottom: 2rem; + border-bottom: 1px solid var(--border); +} + +.changelog-item:last-child { + border-bottom: none; + padding-bottom: 0; +} + +.changelog-date { + min-width: 150px; +} + +.changelog-version { + background: var(--primary-color); + color: white; + padding: 0.25rem 0.75rem; + border-radius: 1rem; + font-size: 0.75rem; + font-weight: 600; + display: inline-block; + margin-bottom: 0.5rem; +} + +.changelog-timestamp { + font-size: 0.875rem; + color: var(--text-secondary); +} + +.changelog-content h4 { + margin-top: 0; + margin-bottom: 0.75rem; + font-size: 1.125rem; + font-weight: 600; +} + +.changelog-content ul { + margin: 0; + padding-left: 1.5rem; +} + +.changelog-content li { + color: var(--text-secondary); + margin-bottom: 0.25rem; +} + +/* Toast */ +.toast { + position: fixed; + top: 2rem; + right: 2rem; + background: var(--success); + color: white; + padding: 1rem 1.5rem; + border-radius: 0.5rem; + box-shadow: var(--shadow-lg); + transform: translateX(100%); + transition: transform 0.3s ease; + z-index: 1000; +} + +.toast.show { + transform: translateX(0); +} + +.toast-content { + display: flex; + align-items: center; + gap: 0.5rem; +} + +.toast-icon { + font-size: 1.25rem; +} + +/* Responsive Design */ +@media (max-width: 1024px) { + .docs-layout { + flex-direction: column; + } + + .sidebar { + width: 100%; + height: auto; + position: static; + border-right: none; + border-bottom: 1px solid var(--border); + } + + .sidebar-content { + padding: 1.5rem; + } + + .sidebar-nav { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); + gap: 1rem; + } + + .nav-section { + background: white; + padding: 1rem; + border-radius: 0.5rem; + border: 1px solid var(--border); + } +} + +@media (max-width: 768px) { + .nav-menu { + display: none; + } + + .content-container { + padding: 1rem; + } + + .doc-section h1 { + font-size: 2rem; + } + + .doc-section h2 { + font-size: 1.5rem; + } + + .features-grid { + grid-template-columns: 1fr; + } + + .sdk-grid { + grid-template-columns: 1fr; + } + + .postman-card { + flex-direction: column; + gap: 1rem; + text-align: center; + } + + .changelog-item { + flex-direction: column; + gap: 1rem; + } + + .endpoint-header { + flex-direction: column; + align-items: flex-start; + gap: 0.5rem; + } + + .toast { + top: 1rem; + right: 1rem; + left: 1rem; + } +} + +@media (max-width: 480px) { + .sidebar-nav { + grid-template-columns: 1fr; + } + + .api-table { + font-size: 0.75rem; + } + + .api-table th, + .api-table td { + padding: 0.75rem 0.5rem; + } +} |