@opensearch-project/agent-health 0.0.1 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.txt +201 -0
- package/README.md +363 -0
- package/bin/cli.js +32 -0
- package/cli/dist/index.js +4293 -0
- package/dist/06363ae0dcb276526e56d844ae57f1eb2e16d1dc.svg +5 -0
- package/dist/17cc03b81ececabf3c8b3c3bf4b8203cd3028613.svg +5 -0
- package/dist/25f48f7350a1cb261d7ab5492972b53a075f1716.svg +5 -0
- package/dist/3d66ad340959f7e4ae00687e9f14adbd930abe01.svg +5 -0
- package/dist/621824624feb2bb70de09132809d9cce164b8bcb.svg +5 -0
- package/dist/81a42dbbd00769e7d823c228f5193c23f6c35e20.svg +5 -0
- package/dist/agent-health-style-guide.html +415 -0
- package/dist/assets/index-BheBjDce.css +1 -0
- package/dist/assets/index-aT-TLVpA.js +244 -0
- package/dist/assets/opensearch-logo-DV6ruVFq.svg +5 -0
- package/dist/index.html +22 -0
- package/dist/optimize-loop.svg +48 -0
- package/lib/dist/config/index.js +404 -0
- package/lib/dist/index.js +1527 -0
- package/package.json +142 -11
- package/server/dist/app.js +10449 -0
- package/server/dist/index.js +10476 -0
- package/index.js +0 -13
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<svg preserveAspectRatio="none" width="100%" height="100%" overflow="visible" style="display: block;" viewBox="0 0 8.75 14" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<g id="SVG">
|
|
3
|
+
<path id="Vector" d="M6.74455 8.49137C7.08635 8.14957 7.08635 7.59449 6.74455 7.25269L3.24455 3.75269C2.99299 3.50113 2.61838 3.4273 2.29025 3.56402C1.96213 3.70074 1.74885 4.01793 1.74885 4.3734L1.75158 11.3734C1.75158 11.7261 1.96486 12.0461 2.29299 12.1828C2.62111 12.3195 2.99572 12.2429 3.24728 11.9941L6.74728 8.4941L6.74455 8.49137" fill="var(--fill-0, #9CA3AF)"/>
|
|
4
|
+
</g>
|
|
5
|
+
</svg>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<svg preserveAspectRatio="none" width="100%" height="100%" overflow="visible" style="display: block;" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<g id="SVG">
|
|
3
|
+
<path id="Vector" d="M6 0C9.31149 0 12 2.68851 12 6C12 9.31149 9.31149 12 6 12C2.68851 12 0 9.31149 0 6C0 2.68851 2.68851 0 6 0V0M5.4375 2.8125V6C5.4375 6.1875 5.53125 6.36328 5.68828 6.46875L7.93828 7.96875C8.19609 8.14219 8.54531 8.07188 8.71875 7.81172Cnan nan 8.82188 7.20469 8.56172 7.03125L6.5625 5.7V2.8125C6.5625 2.50078 6.31172 2.25 6 2.25Cnan nan 5.4375 2.50078 5.4375 2.8125V2.8125" fill="var(--fill-0, #6B7280)"/>
|
|
4
|
+
</g>
|
|
5
|
+
</svg>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<svg preserveAspectRatio="none" width="100%" height="100%" overflow="visible" style="display: block;" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<g id="SVG">
|
|
3
|
+
<path id="Vector" d="M6.375 0H9.28359C9.58125 0 9.86719 0.119531 10.0781 0.330469L11.6695 1.92188C11.8805 2.13281 12 2.41875 12 2.71641V7.875C12 8.49609 11.4961 9 10.875 9H6.375C5.75391 9 5.25 8.49609 5.25 7.875V1.125C5.25 0.503906 5.75391 0 6.375 0V0M1.125 3H4.5V4.5H1.5V10.5H6V9.75H7.5V10.875C7.5 11.4961 6.99609 12 6.375 12H1.125C0.503906 12 0 11.4961 0 10.875V4.125C0 3.50391 0.503906 3 1.125 3V3" fill="var(--fill-0, #9CA3AF)"/>
|
|
4
|
+
</g>
|
|
5
|
+
</svg>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<svg preserveAspectRatio="none" width="100%" height="100%" overflow="visible" style="display: block;" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<g id="SVG">
|
|
3
|
+
<path id="Vector" d="M5.47031 9.52969C5.76328 9.82266 6.23906 9.82266 6.53203 9.52969L11.032 5.02969C11.325 4.73672 11.325 4.26094 11.032 3.96797C10.7391 3.675 10.2633 3.675 9.97031 3.96797L6 7.93828L2.02969 3.97031C1.73672 3.67734 1.26094 3.67734 0.967969 3.97031C0.675 4.26328 0.675 4.73906 0.967969 5.03203L5.46797 9.53203L5.47031 9.52969" fill="var(--fill-0, #6B7280)"/>
|
|
4
|
+
</g>
|
|
5
|
+
</svg>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<svg preserveAspectRatio="none" width="100%" height="100%" overflow="visible" style="display: block;" viewBox="0 0 13.5 18" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<g id="SVG">
|
|
3
|
+
<path id="Vector" d="M12.0445 5.29453C12.484 4.85508 12.484 4.14141 12.0445 3.70195C11.6051 3.2625 10.8914 3.2625 10.452 3.70195L6.75 7.40742L3.04453 3.70547C2.60508 3.26602 1.89141 3.26602 1.45195 3.70547C1.0125 4.14492 1.0125 4.85859 1.45195 5.29805L5.15742 9L1.45547 12.7055C1.01602 13.1449 1.01602 13.8586 1.45547 14.298C1.89492 14.7375 2.60859 14.7375 3.04805 14.298L6.75 10.5926L10.4555 14.2945C10.8949 14.734 11.6086 14.734 12.048 14.2945C12.4875 13.8551 12.4875 13.1414 12.048 12.702L8.34258 9L12.0445 5.29453V5.29453" fill="var(--fill-0, #9CA3AF)"/>
|
|
4
|
+
</g>
|
|
5
|
+
</svg>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<svg preserveAspectRatio="none" width="100%" height="100%" overflow="visible" style="display: block;" viewBox="0 0 8.75365 14" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<g id="SVG">
|
|
3
|
+
<path id="Vector" d="M3.75855 10.243C4.10035 10.5848 4.65543 10.5848 4.99723 10.243L8.49723 6.74297C8.74879 6.49141 8.82262 6.1168 8.6859 5.78867C8.54918 5.46055 8.23199 5.24727 7.87652 5.24727L0.876522 5.25C0.523788 5.25 0.203866 5.46328 0.0671472 5.79141C-0.0695715 6.11953 0.00699096 6.49414 0.255819 6.7457L3.75582 10.2457L3.75855 10.243" fill="var(--fill-0, #9CA3AF)"/>
|
|
4
|
+
</g>
|
|
5
|
+
</svg>
|
|
@@ -0,0 +1,415 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<title>Agent Health - Style Guide</title>
|
|
7
|
+
<script src="https://cdn.tailwindcss.com"></script>
|
|
8
|
+
<script>
|
|
9
|
+
tailwind.config = {
|
|
10
|
+
darkMode: 'class',
|
|
11
|
+
theme: {
|
|
12
|
+
extend: {
|
|
13
|
+
colors: {
|
|
14
|
+
'opensearch-blue': '#005EB8',
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
</script>
|
|
20
|
+
<style>
|
|
21
|
+
body {
|
|
22
|
+
font-family: 'Rubik', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
|
|
23
|
+
}
|
|
24
|
+
.code-font {
|
|
25
|
+
font-family: 'Source Code Pro', 'Monaco', 'Courier New', monospace;
|
|
26
|
+
}
|
|
27
|
+
</style>
|
|
28
|
+
</head>
|
|
29
|
+
<body class="bg-white dark:bg-slate-950 text-slate-900 dark:text-slate-100 transition-colors">
|
|
30
|
+
<div class="max-w-7xl mx-auto p-8">
|
|
31
|
+
<!-- Theme Toggle -->
|
|
32
|
+
<div class="fixed top-4 right-4 z-50">
|
|
33
|
+
<button
|
|
34
|
+
onclick="toggleTheme()"
|
|
35
|
+
class="px-4 py-2 bg-slate-200 dark:bg-slate-800 rounded-lg border border-slate-300 dark:border-slate-700 hover:bg-slate-300 dark:hover:bg-slate-700 transition-colors"
|
|
36
|
+
>
|
|
37
|
+
<span class="dark:hidden">🌙 Dark Mode</span>
|
|
38
|
+
<span class="hidden dark:inline">☀️ Light Mode</span>
|
|
39
|
+
</button>
|
|
40
|
+
</div>
|
|
41
|
+
|
|
42
|
+
<!-- Header -->
|
|
43
|
+
<header class="mb-12">
|
|
44
|
+
<h1 class="text-4xl font-bold mb-2">Agent Health Style Guide</h1>
|
|
45
|
+
<p class="text-slate-600 dark:text-slate-400">Comprehensive color and component reference</p>
|
|
46
|
+
</header>
|
|
47
|
+
|
|
48
|
+
<!-- Badges Section -->
|
|
49
|
+
<section class="mb-12">
|
|
50
|
+
<h2 class="text-2xl font-bold mb-6 pb-2 border-b border-slate-200 dark:border-slate-800">Badges & Pills</h2>
|
|
51
|
+
|
|
52
|
+
<div class="space-y-8">
|
|
53
|
+
<!-- Status Badges -->
|
|
54
|
+
<div>
|
|
55
|
+
<h3 class="text-lg font-semibold mb-4">Status Badges</h3>
|
|
56
|
+
<div class="grid grid-cols-2 md:grid-cols-4 gap-4">
|
|
57
|
+
<div class="p-4 bg-slate-50 dark:bg-slate-900 rounded-lg border border-slate-200 dark:border-slate-800">
|
|
58
|
+
<p class="text-xs text-slate-600 dark:text-slate-400 mb-2">Built-in (Current)</p>
|
|
59
|
+
<span class="text-[10px] px-1.5 py-0.5 bg-muted text-muted-foreground border border-border rounded inline-block">built-in</span>
|
|
60
|
+
</div>
|
|
61
|
+
|
|
62
|
+
<div class="p-4 bg-slate-50 dark:bg-slate-900 rounded-lg border border-slate-200 dark:border-slate-800">
|
|
63
|
+
<p class="text-xs text-slate-600 dark:text-slate-400 mb-2">Running</p>
|
|
64
|
+
<span class="text-xs px-2 py-1 bg-blue-500/20 text-blue-400 border border-blue-500/30 rounded inline-block">Running</span>
|
|
65
|
+
</div>
|
|
66
|
+
|
|
67
|
+
<div class="p-4 bg-slate-50 dark:bg-slate-900 rounded-lg border border-slate-200 dark:border-slate-800">
|
|
68
|
+
<p class="text-xs text-slate-600 dark:text-slate-400 mb-2">Latest</p>
|
|
69
|
+
<span class="text-xs px-2 py-1 bg-blue-500/10 text-blue-400 border border-blue-500/30 rounded inline-block">Latest</span>
|
|
70
|
+
</div>
|
|
71
|
+
|
|
72
|
+
<div class="p-4 bg-slate-50 dark:bg-slate-900 rounded-lg border border-slate-200 dark:border-slate-800">
|
|
73
|
+
<p class="text-xs text-slate-600 dark:text-slate-400 mb-2">New</p>
|
|
74
|
+
<span class="text-xs px-2 py-1 bg-green-500/20 text-green-400 border border-green-500/30 rounded inline-block">new</span>
|
|
75
|
+
</div>
|
|
76
|
+
|
|
77
|
+
<div class="p-4 bg-slate-50 dark:bg-slate-900 rounded-lg border border-slate-200 dark:border-slate-800">
|
|
78
|
+
<p class="text-xs text-slate-600 dark:text-slate-400 mb-2">Passed</p>
|
|
79
|
+
<span class="text-xs px-2 py-1 bg-green-500/20 text-green-400 border border-green-500/30 rounded inline-block">PASSED</span>
|
|
80
|
+
</div>
|
|
81
|
+
|
|
82
|
+
<div class="p-4 bg-slate-50 dark:bg-slate-900 rounded-lg border border-slate-200 dark:border-slate-800">
|
|
83
|
+
<p class="text-xs text-slate-600 dark:text-slate-400 mb-2">Failed</p>
|
|
84
|
+
<span class="text-xs px-2 py-1 bg-red-500/20 text-red-400 border border-red-500/30 rounded inline-block">FAILED</span>
|
|
85
|
+
</div>
|
|
86
|
+
|
|
87
|
+
<div class="p-4 bg-slate-50 dark:bg-slate-900 rounded-lg border border-slate-200 dark:border-slate-800">
|
|
88
|
+
<p class="text-xs text-slate-600 dark:text-slate-400 mb-2">Pending</p>
|
|
89
|
+
<span class="text-xs px-2 py-1 bg-amber-500/20 text-amber-400 border border-amber-500/30 rounded inline-block">PENDING</span>
|
|
90
|
+
</div>
|
|
91
|
+
|
|
92
|
+
<div class="p-4 bg-slate-50 dark:bg-slate-900 rounded-lg border border-slate-200 dark:border-slate-800">
|
|
93
|
+
<p class="text-xs text-slate-600 dark:text-slate-400 mb-2">Outdated</p>
|
|
94
|
+
<span class="text-xs px-2 py-1 bg-yellow-500/10 text-yellow-400 border border-yellow-500/30 rounded inline-block">v1.0</span>
|
|
95
|
+
</div>
|
|
96
|
+
</div>
|
|
97
|
+
</div>
|
|
98
|
+
|
|
99
|
+
<!-- Event Type Badges -->
|
|
100
|
+
<div>
|
|
101
|
+
<h3 class="text-lg font-semibold mb-4">Event Type Badges</h3>
|
|
102
|
+
<div class="grid grid-cols-2 md:grid-cols-4 gap-4">
|
|
103
|
+
<div class="p-4 bg-slate-50 dark:bg-slate-900 rounded-lg border border-slate-200 dark:border-slate-800">
|
|
104
|
+
<p class="text-xs text-slate-600 dark:text-slate-400 mb-2">ERROR</p>
|
|
105
|
+
<span class="text-xs px-2 py-1 text-red-400 bg-red-500/10 rounded inline-block">ERROR</span>
|
|
106
|
+
</div>
|
|
107
|
+
|
|
108
|
+
<div class="p-4 bg-slate-50 dark:bg-slate-900 rounded-lg border border-slate-200 dark:border-slate-800">
|
|
109
|
+
<p class="text-xs text-slate-600 dark:text-slate-400 mb-2">TOOL</p>
|
|
110
|
+
<span class="text-xs px-2 py-1 text-blue-400 bg-blue-500/10 rounded inline-block">TOOL</span>
|
|
111
|
+
</div>
|
|
112
|
+
|
|
113
|
+
<div class="p-4 bg-slate-50 dark:bg-slate-900 rounded-lg border border-slate-200 dark:border-slate-800">
|
|
114
|
+
<p class="text-xs text-slate-600 dark:text-slate-400 mb-2">TEXT</p>
|
|
115
|
+
<span class="text-xs px-2 py-1 text-blue-600 bg-blue-500/10 rounded inline-block">TEXT</span>
|
|
116
|
+
</div>
|
|
117
|
+
|
|
118
|
+
<div class="p-4 bg-slate-50 dark:bg-slate-900 rounded-lg border border-slate-200 dark:border-slate-800">
|
|
119
|
+
<p class="text-xs text-slate-600 dark:text-slate-400 mb-2">RUN</p>
|
|
120
|
+
<span class="text-xs px-2 py-1 text-purple-400 bg-purple-500/10 rounded inline-block">RUN</span>
|
|
121
|
+
</div>
|
|
122
|
+
|
|
123
|
+
<div class="p-4 bg-slate-50 dark:bg-slate-900 rounded-lg border border-slate-200 dark:border-slate-800">
|
|
124
|
+
<p class="text-xs text-slate-600 dark:text-slate-400 mb-2">ACTIVITY</p>
|
|
125
|
+
<span class="text-xs px-2 py-1 text-amber-400 bg-amber-500/10 rounded inline-block">ACTIVITY</span>
|
|
126
|
+
</div>
|
|
127
|
+
</div>
|
|
128
|
+
</div>
|
|
129
|
+
|
|
130
|
+
<!-- Span Category Pills -->
|
|
131
|
+
<div>
|
|
132
|
+
<h3 class="text-lg font-semibold mb-4">Span Category Pills</h3>
|
|
133
|
+
<div class="grid grid-cols-2 md:grid-cols-4 gap-4">
|
|
134
|
+
<div class="p-4 bg-slate-50 dark:bg-slate-900 rounded-lg border border-slate-200 dark:border-slate-800">
|
|
135
|
+
<p class="text-xs text-slate-600 dark:text-slate-400 mb-2">LLM</p>
|
|
136
|
+
<span class="text-xs px-2 py-1 bg-purple-100 text-purple-800 border border-purple-300 dark:bg-purple-500/10 dark:text-purple-300 dark:border-purple-500/30 rounded inline-block">LLM</span>
|
|
137
|
+
</div>
|
|
138
|
+
|
|
139
|
+
<div class="p-4 bg-slate-50 dark:bg-slate-900 rounded-lg border border-slate-200 dark:border-slate-800">
|
|
140
|
+
<p class="text-xs text-slate-600 dark:text-slate-400 mb-2">Agent</p>
|
|
141
|
+
<span class="text-xs px-2 py-1 bg-blue-100 text-blue-800 border border-blue-300 dark:bg-blue-500/10 dark:text-blue-300 dark:border-blue-500/30 rounded inline-block">Agent</span>
|
|
142
|
+
</div>
|
|
143
|
+
|
|
144
|
+
<div class="p-4 bg-slate-50 dark:bg-slate-900 rounded-lg border border-slate-200 dark:border-slate-800">
|
|
145
|
+
<p class="text-xs text-slate-600 dark:text-slate-400 mb-2">Tool Calls</p>
|
|
146
|
+
<span class="text-xs px-2 py-1 bg-amber-100 text-amber-800 border border-amber-300 dark:bg-amber-500/10 dark:text-amber-300 dark:border-amber-500/30 rounded inline-block">Tool Calls</span>
|
|
147
|
+
</div>
|
|
148
|
+
|
|
149
|
+
<div class="p-4 bg-slate-50 dark:bg-slate-900 rounded-lg border border-slate-200 dark:border-slate-800">
|
|
150
|
+
<p class="text-xs text-slate-600 dark:text-slate-400 mb-2">Error(s)</p>
|
|
151
|
+
<span class="text-xs px-2 py-1 bg-red-100 text-red-800 border border-red-300 dark:bg-red-500/10 dark:text-red-300 dark:border-red-500/30 rounded inline-block">Error(s)</span>
|
|
152
|
+
</div>
|
|
153
|
+
</div>
|
|
154
|
+
</div>
|
|
155
|
+
</div>
|
|
156
|
+
</section>
|
|
157
|
+
|
|
158
|
+
<!-- Alert Banners Section -->
|
|
159
|
+
<section class="mb-12">
|
|
160
|
+
<h2 class="text-2xl font-bold mb-6 pb-2 border-b border-slate-200 dark:border-slate-800">Alert Banners</h2>
|
|
161
|
+
|
|
162
|
+
<div class="space-y-4">
|
|
163
|
+
<div class="p-4 bg-yellow-50 dark:bg-yellow-500/10 border border-yellow-300 dark:border-yellow-500/30 rounded-lg">
|
|
164
|
+
<div class="flex items-center gap-3">
|
|
165
|
+
<span class="text-yellow-700 dark:text-yellow-400">⚠️</span>
|
|
166
|
+
<div>
|
|
167
|
+
<div class="text-sm font-medium text-yellow-700 dark:text-yellow-400">Warning Banner</div>
|
|
168
|
+
<div class="text-xs text-slate-600 dark:text-slate-400">This is a warning message</div>
|
|
169
|
+
</div>
|
|
170
|
+
</div>
|
|
171
|
+
</div>
|
|
172
|
+
|
|
173
|
+
<div class="p-4 bg-red-50 dark:bg-red-500/10 border border-red-300 dark:border-red-500/30 rounded-lg">
|
|
174
|
+
<div class="flex items-center gap-3">
|
|
175
|
+
<span class="text-red-700 dark:text-red-400">❌</span>
|
|
176
|
+
<div>
|
|
177
|
+
<div class="text-sm font-medium text-red-700 dark:text-red-400">Error Banner</div>
|
|
178
|
+
<div class="text-xs text-slate-600 dark:text-slate-400">This is an error message</div>
|
|
179
|
+
</div>
|
|
180
|
+
</div>
|
|
181
|
+
</div>
|
|
182
|
+
|
|
183
|
+
<div class="p-4 bg-green-500/10 border border-green-500/20 rounded-lg">
|
|
184
|
+
<div class="flex items-center gap-3 text-green-400">
|
|
185
|
+
<span>✓</span>
|
|
186
|
+
<div>
|
|
187
|
+
<div class="text-sm font-medium">Success Banner</div>
|
|
188
|
+
<div class="text-xs text-slate-600 dark:text-slate-400">This is a success message</div>
|
|
189
|
+
</div>
|
|
190
|
+
</div>
|
|
191
|
+
</div>
|
|
192
|
+
|
|
193
|
+
<div class="p-4 bg-blue-500/10 border border-blue-500/20 rounded-lg">
|
|
194
|
+
<div class="flex items-center gap-3 text-blue-400">
|
|
195
|
+
<span>ℹ️</span>
|
|
196
|
+
<div>
|
|
197
|
+
<div class="text-sm font-medium">Info Banner</div>
|
|
198
|
+
<div class="text-xs text-slate-600 dark:text-slate-400">This is an info message</div>
|
|
199
|
+
</div>
|
|
200
|
+
</div>
|
|
201
|
+
</div>
|
|
202
|
+
</div>
|
|
203
|
+
</section>
|
|
204
|
+
|
|
205
|
+
<!-- Metric Cards Section -->
|
|
206
|
+
<section class="mb-12">
|
|
207
|
+
<h2 class="text-2xl font-bold mb-6 pb-2 border-b border-slate-200 dark:border-slate-800">Metric Cards</h2>
|
|
208
|
+
|
|
209
|
+
<div class="grid grid-cols-2 md:grid-cols-4 gap-4">
|
|
210
|
+
<div class="p-4 bg-slate-50 dark:bg-slate-900 rounded-lg border border-slate-200 dark:border-slate-800">
|
|
211
|
+
<div class="text-[10px] text-slate-600 dark:text-slate-400 mb-1">Accuracy</div>
|
|
212
|
+
<div class="text-xs font-semibold text-blue-700 dark:text-blue-400">95.2%</div>
|
|
213
|
+
</div>
|
|
214
|
+
|
|
215
|
+
<div class="p-4 bg-slate-50 dark:bg-slate-900 rounded-lg border border-slate-200 dark:border-slate-800">
|
|
216
|
+
<div class="text-[10px] text-slate-600 dark:text-slate-400 mb-1">Latency</div>
|
|
217
|
+
<div class="text-xs font-semibold text-amber-700 dark:text-amber-400">1.2s</div>
|
|
218
|
+
</div>
|
|
219
|
+
|
|
220
|
+
<div class="p-4 bg-slate-50 dark:bg-slate-900 rounded-lg border border-slate-200 dark:border-slate-800">
|
|
221
|
+
<div class="text-[10px] text-slate-600 dark:text-slate-400 mb-1">Duration</div>
|
|
222
|
+
<div class="text-xs font-semibold text-purple-700 dark:text-purple-400">4m 47s</div>
|
|
223
|
+
</div>
|
|
224
|
+
|
|
225
|
+
<div class="p-4 bg-slate-50 dark:bg-slate-900 rounded-lg border border-slate-200 dark:border-slate-800">
|
|
226
|
+
<div class="text-[10px] text-slate-600 dark:text-slate-400 mb-1">Error Rate</div>
|
|
227
|
+
<div class="text-xs font-semibold text-red-700 dark:text-red-400">2.1%</div>
|
|
228
|
+
</div>
|
|
229
|
+
</div>
|
|
230
|
+
</section>
|
|
231
|
+
|
|
232
|
+
<!-- Buttons Section -->
|
|
233
|
+
<section class="mb-12">
|
|
234
|
+
<h2 class="text-2xl font-bold mb-6 pb-2 border-b border-slate-200 dark:border-slate-800">Buttons</h2>
|
|
235
|
+
|
|
236
|
+
<div class="space-y-6">
|
|
237
|
+
<div>
|
|
238
|
+
<h3 class="text-lg font-semibold mb-4">Primary Actions</h3>
|
|
239
|
+
<div class="flex flex-wrap gap-4">
|
|
240
|
+
<button class="px-4 py-2 bg-blue-600 hover:bg-blue-700 text-white rounded-lg transition-colors">
|
|
241
|
+
Primary Button
|
|
242
|
+
</button>
|
|
243
|
+
<button class="px-4 py-2 bg-slate-200 dark:bg-slate-800 hover:bg-slate-300 dark:hover:bg-slate-700 rounded-lg border border-slate-300 dark:border-slate-700 transition-colors">
|
|
244
|
+
Secondary Button
|
|
245
|
+
</button>
|
|
246
|
+
<button class="px-4 py-2 text-slate-600 dark:text-slate-400 hover:bg-slate-100 dark:hover:bg-slate-800 rounded-lg transition-colors">
|
|
247
|
+
Ghost Button
|
|
248
|
+
</button>
|
|
249
|
+
</div>
|
|
250
|
+
</div>
|
|
251
|
+
|
|
252
|
+
<div>
|
|
253
|
+
<h3 class="text-lg font-semibold mb-4">Destructive Actions</h3>
|
|
254
|
+
<div class="flex flex-wrap gap-4">
|
|
255
|
+
<button class="px-4 py-2 text-red-400 hover:text-red-300 hover:bg-red-500/10 border border-red-500/30 rounded-lg transition-colors">
|
|
256
|
+
Delete
|
|
257
|
+
</button>
|
|
258
|
+
<button class="px-4 py-2 text-red-400 hover:text-red-300 hover:bg-red-500/10 rounded-lg transition-colors">
|
|
259
|
+
Cancel
|
|
260
|
+
</button>
|
|
261
|
+
</div>
|
|
262
|
+
</div>
|
|
263
|
+
</div>
|
|
264
|
+
</section>
|
|
265
|
+
|
|
266
|
+
<!-- Status Indicators Section -->
|
|
267
|
+
<section class="mb-12">
|
|
268
|
+
<h2 class="text-2xl font-bold mb-6 pb-2 border-b border-slate-200 dark:border-slate-800">Status Indicators</h2>
|
|
269
|
+
|
|
270
|
+
<div class="grid grid-cols-2 md:grid-cols-4 gap-4">
|
|
271
|
+
<div class="p-4 bg-slate-50 dark:bg-slate-900 rounded-lg border border-slate-200 dark:border-slate-800">
|
|
272
|
+
<div class="flex items-center gap-2">
|
|
273
|
+
<span class="w-2 h-2 rounded-full bg-green-500"></span>
|
|
274
|
+
<span class="text-sm">Online</span>
|
|
275
|
+
</div>
|
|
276
|
+
</div>
|
|
277
|
+
|
|
278
|
+
<div class="p-4 bg-slate-50 dark:bg-slate-900 rounded-lg border border-slate-200 dark:border-slate-800">
|
|
279
|
+
<div class="flex items-center gap-2">
|
|
280
|
+
<span class="w-2 h-2 rounded-full bg-red-500"></span>
|
|
281
|
+
<span class="text-sm">Offline</span>
|
|
282
|
+
</div>
|
|
283
|
+
</div>
|
|
284
|
+
|
|
285
|
+
<div class="p-4 bg-slate-50 dark:bg-slate-900 rounded-lg border border-slate-200 dark:border-slate-800">
|
|
286
|
+
<div class="flex items-center gap-2">
|
|
287
|
+
<span class="text-green-700 dark:text-green-400">✓</span>
|
|
288
|
+
<span class="text-sm">Success</span>
|
|
289
|
+
</div>
|
|
290
|
+
</div>
|
|
291
|
+
|
|
292
|
+
<div class="p-4 bg-slate-50 dark:bg-slate-900 rounded-lg border border-slate-200 dark:border-slate-800">
|
|
293
|
+
<div class="flex items-center gap-2">
|
|
294
|
+
<span class="text-red-700 dark:text-red-400">✗</span>
|
|
295
|
+
<span class="text-sm">Error</span>
|
|
296
|
+
</div>
|
|
297
|
+
</div>
|
|
298
|
+
</div>
|
|
299
|
+
</section>
|
|
300
|
+
|
|
301
|
+
<!-- Typography Section -->
|
|
302
|
+
<section class="mb-12">
|
|
303
|
+
<h2 class="text-2xl font-bold mb-6 pb-2 border-b border-slate-200 dark:border-slate-800">Typography</h2>
|
|
304
|
+
|
|
305
|
+
<div class="space-y-4">
|
|
306
|
+
<div>
|
|
307
|
+
<h1 class="text-4xl font-bold mb-2">Heading 1</h1>
|
|
308
|
+
<p class="text-slate-600 dark:text-slate-400 text-sm">text-4xl font-bold</p>
|
|
309
|
+
</div>
|
|
310
|
+
|
|
311
|
+
<div>
|
|
312
|
+
<h2 class="text-2xl font-bold mb-2">Heading 2</h2>
|
|
313
|
+
<p class="text-slate-600 dark:text-slate-400 text-sm">text-2xl font-bold</p>
|
|
314
|
+
</div>
|
|
315
|
+
|
|
316
|
+
<div>
|
|
317
|
+
<h3 class="text-lg font-semibold mb-2">Heading 3</h3>
|
|
318
|
+
<p class="text-slate-600 dark:text-slate-400 text-sm">text-lg font-semibold</p>
|
|
319
|
+
</div>
|
|
320
|
+
|
|
321
|
+
<div>
|
|
322
|
+
<p class="text-base mb-2">Body text - Regular paragraph text that appears throughout the application.</p>
|
|
323
|
+
<p class="text-slate-600 dark:text-slate-400 text-sm">text-base</p>
|
|
324
|
+
</div>
|
|
325
|
+
|
|
326
|
+
<div>
|
|
327
|
+
<p class="text-sm text-slate-600 dark:text-slate-400 mb-2">Secondary text - Used for descriptions and helper text.</p>
|
|
328
|
+
<p class="text-slate-600 dark:text-slate-400 text-sm">text-sm text-slate-600 dark:text-slate-400</p>
|
|
329
|
+
</div>
|
|
330
|
+
|
|
331
|
+
<div>
|
|
332
|
+
<p class="text-xs text-slate-500 dark:text-slate-500 mb-2">Tertiary text - Used for labels and metadata.</p>
|
|
333
|
+
<p class="text-slate-600 dark:text-slate-400 text-sm">text-xs text-slate-500</p>
|
|
334
|
+
</div>
|
|
335
|
+
|
|
336
|
+
<div>
|
|
337
|
+
<code class="code-font text-sm bg-slate-100 dark:bg-slate-900 px-2 py-1 rounded">const example = "code";</code>
|
|
338
|
+
<p class="text-slate-600 dark:text-slate-400 text-sm mt-2">Source Code Pro - Monospace font</p>
|
|
339
|
+
</div>
|
|
340
|
+
</div>
|
|
341
|
+
</section>
|
|
342
|
+
|
|
343
|
+
<!-- Color Palette Section -->
|
|
344
|
+
<section class="mb-12">
|
|
345
|
+
<h2 class="text-2xl font-bold mb-6 pb-2 border-b border-slate-200 dark:border-slate-800">Color Palette</h2>
|
|
346
|
+
|
|
347
|
+
<div class="space-y-6">
|
|
348
|
+
<div>
|
|
349
|
+
<h3 class="text-lg font-semibold mb-4">Primary Colors</h3>
|
|
350
|
+
<div class="grid grid-cols-2 md:grid-cols-4 gap-4">
|
|
351
|
+
<div>
|
|
352
|
+
<div class="h-20 bg-blue-600 rounded-lg mb-2"></div>
|
|
353
|
+
<p class="text-sm font-medium">Blue 600</p>
|
|
354
|
+
<p class="text-xs text-slate-600 dark:text-slate-400">#2563eb</p>
|
|
355
|
+
</div>
|
|
356
|
+
<div>
|
|
357
|
+
<div class="h-20 bg-[#005EB8] rounded-lg mb-2"></div>
|
|
358
|
+
<p class="text-sm font-medium">OpenSearch Blue</p>
|
|
359
|
+
<p class="text-xs text-slate-600 dark:text-slate-400">#005EB8</p>
|
|
360
|
+
</div>
|
|
361
|
+
</div>
|
|
362
|
+
</div>
|
|
363
|
+
|
|
364
|
+
<div>
|
|
365
|
+
<h3 class="text-lg font-semibold mb-4">Semantic Colors</h3>
|
|
366
|
+
<div class="grid grid-cols-2 md:grid-cols-5 gap-4">
|
|
367
|
+
<div>
|
|
368
|
+
<div class="h-20 bg-green-500 rounded-lg mb-2"></div>
|
|
369
|
+
<p class="text-sm font-medium">Success</p>
|
|
370
|
+
<p class="text-xs text-slate-600 dark:text-slate-400">green-500</p>
|
|
371
|
+
</div>
|
|
372
|
+
<div>
|
|
373
|
+
<div class="h-20 bg-red-500 rounded-lg mb-2"></div>
|
|
374
|
+
<p class="text-sm font-medium">Error</p>
|
|
375
|
+
<p class="text-xs text-slate-600 dark:text-slate-400">red-500</p>
|
|
376
|
+
</div>
|
|
377
|
+
<div>
|
|
378
|
+
<div class="h-20 bg-yellow-500 rounded-lg mb-2"></div>
|
|
379
|
+
<p class="text-sm font-medium">Warning</p>
|
|
380
|
+
<p class="text-xs text-slate-600 dark:text-slate-400">yellow-500</p>
|
|
381
|
+
</div>
|
|
382
|
+
<div>
|
|
383
|
+
<div class="h-20 bg-amber-500 rounded-lg mb-2"></div>
|
|
384
|
+
<p class="text-sm font-medium">Caution</p>
|
|
385
|
+
<p class="text-xs text-slate-600 dark:text-slate-400">amber-500</p>
|
|
386
|
+
</div>
|
|
387
|
+
<div>
|
|
388
|
+
<div class="h-20 bg-purple-500 rounded-lg mb-2"></div>
|
|
389
|
+
<p class="text-sm font-medium">Info</p>
|
|
390
|
+
<p class="text-xs text-slate-600 dark:text-slate-400">purple-500</p>
|
|
391
|
+
</div>
|
|
392
|
+
</div>
|
|
393
|
+
</div>
|
|
394
|
+
</div>
|
|
395
|
+
</section>
|
|
396
|
+
</div>
|
|
397
|
+
|
|
398
|
+
<script>
|
|
399
|
+
function toggleTheme() {
|
|
400
|
+
document.documentElement.classList.toggle('dark');
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
// Check for saved theme preference or default to light mode
|
|
404
|
+
if (localStorage.theme === 'dark' || (!('theme' in localStorage) && window.matchMedia('(prefers-color-scheme: dark)').matches)) {
|
|
405
|
+
document.documentElement.classList.add('dark');
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
// Save theme preference when toggled
|
|
409
|
+
const observer = new MutationObserver(() => {
|
|
410
|
+
localStorage.theme = document.documentElement.classList.contains('dark') ? 'dark' : 'light';
|
|
411
|
+
});
|
|
412
|
+
observer.observe(document.documentElement, { attributes: true, attributeFilter: ['class'] });
|
|
413
|
+
</script>
|
|
414
|
+
</body>
|
|
415
|
+
</html>
|